Začínáme s PHP - superglobální proměnné (20. díl)

Napsal O webu (») 8. 7. 2005 v kategorii PHP/HTML, přečteno: 5232×

Téma, které nedá začátečníkům spát...

Toto téma není zase tak strašné, jaké se může zdát, ale přesto není dobré ho podceňovat.

Co to je?

Superglobální proměnné (můžete vidět i jenom globální proměnné) jsou speciálním druhem proměnných (resp. polí, viz dále), které máte k dispozici v každém scriptu (ne však vždy všechny). V některých máte informace o serveru či klientovi, jinde zase odkazy na všechny proměnné ...
Superglobální proměnné můžete používat za každé situace. Ve starších verzích PHP (ale i v nových - záleží na nastavení) byla zapnuta v php.ini volba register_globals. To způsobovalo, že veškeré proměnné, které by se jinak nacházaly jenom v superglobálních polích, byly dostupné i pod holou proměnnou (např. $remote_addr, ekv. $_SERVER['REMOTE_ADDR']). Při použití těchto proměnných se snižovala bezpečnost aplikace a zvyšovala se možnost podvrhnout hodnotu proměnné (např. očekáváte proměnnou metodou POST, kdežto útočník Vám ji podvrhne metodou GET a Vy přesto nic nepoznáte). Proto je nanejvýš vhodné používat superglobální proměnné. Ušetříte si s tím hodně práce a možných problémů.
Superglobálních proměnných máme 9:

Proměnná Význam || obsah $GLOBALS všechny běžně používané proměnné v PHP (i všechny superglobální proměnné, vč. $GLOBALS) $_SERVER různé systémové proměnné; údaje o serveru i uživateli $_ENV proměnné poskytované skriptu z prostředí. Téměř nepoužívané, ani my je používat nebudeme. $_POST proměnné poskytované skriptu přes HTTP POST (nejčastěji odesláním formuláře (téma příštího článku)) $_GET proměnné poskytované skriptu přes HTTP GET (tj. přes adresní řádek) $_COOKIE proměnné poskytované skriptu přes HTTP cookies $_FILES proměnné poskytované skriptu přes HTTP POST upload souborů $_REQUEST proměnné poskytované skriptu přes libovolný vstupní mechanismus (tzn. nerozlišuje POST, GET, COOKIE...) a kterým proto nelze důvěřovat $_SESSION proměnné registrované pro aktuální sezením (SESSION se budeme věnovat popříště)

Tak to byl seznam superglobálních proměnných. Dnes nebudeme rozebírat všechny, jen některé, většinu rozebereme v některém z příštích článků, protože je to docela rozsáhlé téma.

$GLOBALS

Kteroukoliv proměnnou, kterou definujete, tak naleznete právě v této superglobální proměnné. Takže v podstatě, když máte register_globals na ON, tak byste zde mohli nalézt proměnné, co byste jinak hledali v superglobálních proměnných $_POST nebo $_GET (popř. jiný vstup). Ostatně, předveďme si to: // inicializujeme si dvě proměnné
$normalnipromenna = "normalní text";
$GLOBALS["globalspromenna"] = "text v proměnné 'globalspromenna' v superglobální proměnné $GLOBALS";

// a teď si je vyzkoušíme:
echo "Normální proměnná jinak: {$GLOBALS["normalnipromenna"]}
";
echo "Druhá proměnná normálně: $globalspromenna
";
Pokud si tento kód vyzkoušíte, zjistíte, že se Vám vytisklo to samé, jako kdybyste tiskli způsobem, kterým jste danou proměnnou inicializovali. Zkrátka to potvrzuje, co jsme si řekli před chvílí: v superglobální proměnné $GLOBALS jsou všechny proměnné (i pole samozřejmě), které jsou dostupné klasickým způsobem.

Závěr

Superglobální proměnné a souvislosti s nimi spojené jsou častými otázkami začátečníků. Tento článek by měl některé začít nepravidelnou sérii článků, které budou tyto otázky zodpovídat. Dnes to byl hlavně přehled superglobálních proměnných a přiblížení superglobální proměnné $GLOBALS.

Příště

Příště navážeme na toto téma a prakticky ho rozvineme. Budeme zpracovávat data získaná z formuláře (především superglobální proměnné $_POST a $_GET, ale zapleteme do toho i jiné).

Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Článek ještě nebyl okomentován.


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel dvanáct a sedm