Speciální znaky v názvech externích proměnných

Školení, která pořádám

Převážně z historických důvodů (kdy se ještě hojně používala direktiva register_globals a neexistovaly proměnné jako $_GET) se s některými speciálními znaky uvnitř názvů externích proměnných zachází odlišně:

Tečka se do seznamu nahrazovaných znaků dostala s největší pravděpodobností proto, že ji používá <input type="image"> pro oddělení X a Y souřadnice kliknutí.

Jediný způsob, jak se těchto omezení zbavit, je vytvořit si vlastní zpracování proměnné QUERY_STRING (pro parametry URL), php://input (pro metodu POST) a HTTP_COOKIE (pro cookies).

Ostatní speciální znaky se zaregistrují, ale přes globální proměnnou k nim nejde snadno přistoupit. Použít jde buď $GLOBALS[","] nebo konstrukce ${","}.

Jakub Vrána, Výuka, 5.2.2007, diskuse: 2 (nové: 0)

Diskuse

GLOBALS:

Pokus o vytvoření globální proměnné GLOBALS selže, neboť GLOBALS obsahuje všechny globální proměnné, včetně sebe sama. to dělá problémy, pokud si chcete rekurzivně vypsat všechny proměnné. je třeba ji z takového výpisu vyloučit.

ikona Jakub Vrána OpenID:

Popis proměnné GLOBALS je správně, ale důvod zákazu jejího přepsání spočívá v bezpečnosti a ne v tom, že by to principiálně nešlo.

Vložit příspěvek

Používejte diakritiku. Vstup se chápe jako čistý text, ale URL budou převedeny na odkazy a PHP kód uzavřený do <?php ?> bude zvýrazněn. Pokud máte dotaz, který nesouvisí s článkem, zkuste raději diskusi o PHP, zde se odpovědi pravděpodobně nedočkáte.

Jméno: URL:

avatar © 2005-2014 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.