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..
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007