Speciální znaky v názvech externích proměnných
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ě:
- Ignorují se mezery na začátku názvu
- Neregistrují se proměnné s prázdným názvem
- Mezery, neuzavřené
[a tečky se převádějí na podtržítko - Pokus o vytvoření globální proměnné
GLOBALSselže
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
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.
Jakub Vrána
:
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.
Diskuse je zrušena z důvodu spamu.

