Filtrování proměnných2 - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



PHP

Filtrování proměnných2

14. února 2000, 00.00 | Pokračování článku o práci s proměnnými. Praktická aplikace pro volání cizích nebo více skriptů na stráce..


V minulém příspěvku jsme se věnovali výběru proměnných s daným prefixem. To se dá využít v mnoha případech. Za všechny vybírám jeden.

Chceme vytvořit větší projekt, sestávající se z více menších prográmků, navzájem do sebe includovaných. Nic nemožného, snáze použijeme již napsanou věc než ji zbytečně psát znovu.
Problém ovšem nastává při includování, kdy hrozí že ve vkládaném programu si přemažeme některé dosud používané proměnné. Řešením je samozřejmě použití unikátních jmen, ale to např. v cizích programech nelze zaručit.

Další možností je použítí prefixů a před vložení programu prefix u proměnných odstranit a u stávajících naopak přidat.
K tomu je určena tato funkce:


/* odstrani prefix pro danne promenne a pokud se
predtim vyskytovali prom. danneho jmena, tak tem
naopak nejaky hezky prefix prida */

function rmprefix($uid)
{
reset($GLOBALS);
$pref="_$uid";
while( list($key, $val) = each ($GLOBALS))
  if(substr($key,0,strlen($pref))==$pref) 
   {
    $name=substr($key,strlen($pref),strlen($key));
    if($GLOBALS[$name])
      //if uz tam promenna tohoto jmena je.. 
      $GLOBALS["__up$name"]=$GLOBALS[$name];
      $GLOBALS[$name]=$val;
   }
}

Po ukončení vloženého programu je třeba vrátit proměnné do původní podoby..


/* reverzni akce, zjednodusena, nezajima se o to
co premazava, stejne to uz neni potreba!! (ty data) */
function addprefix($uid)
{
reset($GLOBALS);
$pref="__up";
while( list($key, $val) = each ($GLOBALS))
  if(substr($key,0,strlen($pref))==$pref) 
  $GLOBALS[substr($key,strlen($pref),strlen($key))]=$val;
}

Touto technologií můžete volat vkládaný program bez starostí zda předavané proměnné nebudou v konfliktu s jinými. Nevýhodou je že ve volání skriptu musíme udávat hodnoty s prefixem.
Nepřijemné? Pro volání můžete použít následující kódovací funkce:


/* pro GET */
function codehref($href)
{
$pref="__";
$tmp=strtok($href,"?");
$r="$tmp";
while(1)
	{
	$tmp=strtok("=");
	if(!$tmp) 
		return $r;
	$r.="&$pref".$tmp."=";
	$tmp=strtok("&");
	$r.=$tmp;
	}
}

/* pro POST */
/* prevede input file z formulare ...
codeinput("");
       -> 
zvlada to uvozovky ap..
*/

function codeinput($in)
{
$pref="__";
if(!($kde=strpos($in,"name="))) return "---";
$kde+=5;
$out=substr($in,0,$kde);
if($in[$kde]=='"' || $in[$kde]=='\'') {$out.=$in[$kde]; $kde++;}
$out.=$pref;
$out.=substr($in,$kde);
return $out;
}

Obě funkce byly pro účel publikování trochu pozměněny. Pokud se vyskytne nějaká chybička, rád opravím. Hlavní je princip.

Díky výše uvedeným funkcím můžete volat více php scriptů na stejné stránce a to nezávisle na sobě. To umožňuje impementovat do vaší stránky jednoduchý portál..

Tématické zařazení:

 » Rubriky  » PHP  

 » Rubriky  » Web  

Diskuse k článku

 

Vložit nový příspěvek   Sbalit příspěvky

 

Zatím nebyl uložen žádný příspěvek, buďte první.

 

 

Vložit nový příspěvek

Jméno:

Pohlaví:

,

E-mail:

Předmět:

Příspěvek:

 

Kontrola:

Do spodního pole opište z obrázku 5 znaků:

Kód pro ověření

 

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: