PHP kézikönyv
Előző | 12. Fejezet. Változók | Következő

# Előre definiált változók

A PHP egy számos előre definiált változót biztosít az bármely futó szkript számára. Sokat ezek közül nem lehet teljes pontossságal dokumentálni, mert függnek a a futtató szervertől, a használt verziótól, a konfigurálástól, és egyéb tényezőktől. Néhány ilyen változó nem elérhető, ha a PHP parancssorból fut. Ezen változókról találsz egy listát Fenntartott előredefiniált változók c. részben.

Figyelem
A PHP 4.2.0 és későbbi verzióiban a register_globals direktíva alapértelmezett értéke off. Ez a PHP-nek egy jelentős változása. A register_globals off-ra állítása befolyásolja az előredefiniált változók készletét a globális hatáskörben. Például a DOCUMENT_ROOT lekéréséhez a $_SERVER['DOCUMENT_ROOT'] formát kell használnod $DOCUMENT_ROOT helyett, vagy http://www.pelda.hu/teszt.php?id=3 URL esetén $_GET['id']-t az $id helyett, vagy $_ENV['HOME'] alakot a $HOME helyett. Több információért olvasd el a register_globals-ról szóló bejegyzést, a biztonságról szóló fejezetben a Register Globals használatáról szóló részt, valamint a PHP 4.1.0 és 4.2.0 verzióinak bejelentését. A PHP-ben rendelkezésre álló fenntartott előredefiniált változók, mint például a szuperglobális tömbök használata ajánlottabb.

A 4.1.0-s verziótól a PHP további előredefiniált tömböket biztosít, amelyek webszerverektől (ha van), környezetből, és felhasználótól származó változókat tartalmaznak. Ezek az új tömbök elég sajátosak, mivel automatikusan globálisak, azaz automatikusan rendelkezésre állnak minden hatáskörben. Ezért gyakran nevezik ezeket 'autoglobálisn' vagy 'szuperglobális' tömböknek. (A felhasználónak nincs lehetősége szuperglobális változók definiálására.) A szuperglobális tömbök alább vannak felsorolva; viszont a PHP előredefiniált változóinak tartalma és természetüknek tárgyalása a Fenntartott előredefiniált változók című részben olvasható, ahol a régebbi előredefiniált változók ($HTTP_*_VARS) létezéséről is tudomást szerezhetsz. Az 5.0.0 változattól kezdődően az előre definiált hosszú PHP változók létrehozása kikapcsolható a register_long_arrays direktíva segítségével.

> Változó változók: A szuperglobális változók nem használhatók változó változókként függvényekben és osztályok metódusaiban.

> Megjegyzés: Annak ellenére, hogy egyidőben létezhet a szuperglobális és a HTTP_*_VARS tömb, ezen nem azonosak, tehát az egyiknek a módosítása nem változtatja meg a másikat is.

Ha bizonyos változók nincsenek megjelölve a variables_order-ben akkor a megfelelő PHP előredefiniált tömbök üresek.

PHP szuperglobális változók

$GLOBALS

  Minden olyan változóhoz tartalmaz egy referenciát, amely pillanatnyilag a szkript globális hatáskörében létezik. Ennek a tömbnek a kulcsai a globális változók nevei. A $GLOBALS tömb a PHP 3-tól létezik.

$_SERVER

  Olyan változók amelyeket a webszerver állított be vagy amelyek szorosan összefüggenek a szkript futtatási környezetével. Analógiája a régebbi $HTTP_SERVER_VARS tömbnek (amely még mindig rendelkezésre áll, de használata nem ajánlott).

$_GET

  HTTP GET kérés által létrejövő változók. Analógiája a régebbi $HTTP_GET_VARS tömbnek (amely még mindig rendelkezésre áll, de használata nem ajánlott).

$_POST

  HTTP POST kérés által létrejövő változók. Analógiája a régebbi $HTTP_POST_VARS tömbnek (amely még mindig rendelkezésre áll, de használata nem ajánlott).

$_COOKIE

  HTTP sütikből (cookie) származó változók. Analógiája a régebbi $HTTP_COOKIE_VARS tömbnek (amely még mindig rendelkezésre áll, de használata nem ajánlott).

$_FILES

  HTTP post fájlfeltöltés által létrejövő változók. Analógiája a régebbi $HTTP_POST_FILES tömbnek (amely még mindig rendelkezésre áll, de használata nem ajánlott). További információ a POST típusú fájlfeltöltésről szóló fejezetben.

$_ENV

  A környezetből származó változók. Analógiája a régebbi $HTTP_ENV_VARS tömbnek (amely még mindig rendelkezésre áll, de használata nem ajánlott).

$_REQUEST

  HTTP GET, POST és COOKIE bementekből származó változók, azaz amelyekben nem lehet megbízni. A jelenléte és a változók tömbbe való besorolásának sorrendje a PHP variables_order konfigurációs direktívája szerint van definiálva. Ennek nincs közvetlen analógiája a PHP 4.1.0-nál előbbi verzióiban. Lásd még: import_request_variables().

  Figyelem
  A PHP 4.3.0 óta a $_FILES-ban szereplő fájlinformációk nem szerepelnek a $_REQUEST-ben.

  > Megjegyzés: Parancssori futtatás esetén ez nem tartalmazza az argv and argc bejegyzéseket; ezek a $_SERVER tömbben szerepelnek.

$_SESSION

  Olyan változók, amelyek a szkript munkamanetéhez vannak rendelve. Analógiája a régebbi $HTTP_SESSION_VARS tömbnek (amely még mindig rendelkezésre áll, de használata nem ajánlott). További információért lásd a Munkamenet kezelő függvények című részt.

Előző | Tartalom | Következő
Változók | Fel | Változók hatásköre