Forum und email
Zmienne predefiniowane

Zmienne predefiniowane

PHP udostępnia dla każdego pracującego skryptu dużą ilość predefiniowanych zmiennych. Jednakże wiele spośród tych zmiennych nie może być w pełni objaśnionych, gdyż są zależne od rodzaju serwera, jego wersji i ustawień i innych czynników. Niektóre z tych zmiennych nie będą dostępne dla skryptów PHP uruchomionych z linii poleceń. Lista tych zmiennych znajduje się w rozdziale predefiniowane zmienne.

Ostrzeżenie

W PHP 4.2.0 i późniejszych, domyślne ustawienie, które udostępniało predefiniowane zmienne w zasięgu globalnym, zostało zmienione. Zmienne nadchodzące metodą GET i POST oraz zmienne serwera domyślnie nie są już umieszczane w zasięgu globalnym. Zamiast tego umieszczane są w odpowiednich tablicach superglobalnych.

Nadal można uruchomić udostępnianie tych zmiennych w zasięgu globalnym przez ustawienie dyrektywy konfiguracyjnej register_globals na "On" w pliku php.ini.

Więcej informacji odnośnie tej zmiany, wraz z wyjaśnieniem przyczyn, w PHP 4.1.0 Release Announcement.

Począwszy od wersji 4.1.0, PHP udostępnia zestaw predefiniowanych tablic, które zawierają zmienne serwera, zmienne środowiskowe oraz zmienne użytkownika. Tablice te są dość specyficzne, gdyż są one automatycznie globalne, tzn. automatycznie dostępne w każdym zasięgu. Dlatego nazywa się je "autoglobalami" albo "superglobalami". (W PHP nie ma mechanizmu pozwalającego użytkownikowi na definiowanie własnych superglobali.) Superglobale PHP wymienione są poniżej, jednakże wykaz ich zawartości i głębsze omówienie prefiniowanych zmiennych PHP oraz ich natury znajduje się w rozdziale predefiniowane zmienne.

Superglobale PHP

$GLOBALS

Zawiera referencje do każdej ze zmiennych aktualnie dostępnych w zasięgu globalnym skryptu. Kluczami tablicy są nazwy zmiennych globalnych.

$_SERVER

Zmienne tworzone przez serwer lub bezpośrednio powiązane ze środowiskiem uruchomieniowym danego skryptu. Analogiczna do dawnej tablicy $HTTP_SERVER_VARS (która jest nadal dostępna, ale uznana za przestarzałą).

$_GET

Zmienne dostarczone do skryptu za pomocą metodą GET protokołu HTTP. Analogiczna do dawnej tablicy $HTTP_GET_VARS (która jest nadal dostępna, ale uznana za przestarzałą).

$_POST

Zmienne dostarczone do skryptu metodą POST protokołu HTTP. Analogiczna do dawnej tablicy $HTTP_POST_VARS (która jest nadal dostępna, ale uznana za przestarzałą).

$_COOKIE

Zmienne dostarczone do skryptu przez ciasteczka HTTP. Analogiczna do dawnej tablicy $HTTP_COOKIE_VARS (która jest nadal dostępna, ale uznana za przestarzałą).

$_FILES

Zmienne dostarczone do skryptu przez przesłanie plików do serwera metodą POST protokołu HTTP. Analogiczna do dawnej tablicy $HTTP_POST_FILES (która jest nadal dostępna, ale uznana za przestarzałą). Więcej na ten temat w rozdziale przesyłanie plików metodą POST.

$_ENV

Zmienne dostarczone do skryptu przez środowisko operacyjne. Analogiczna do dawnej tablicy $HTTP_ENV_VARS (która jest nadal dostępna, ale uznana za przestarzałą).

$_REQUEST

Zmienne użytkownika dostarczone do skryptu przez każdy mechanizm wejścia, przez co NIE są one godne zaufania. Uwaga: kiedy skrypt jest uruchomiony z linii poleceń, tablica ta nie zawiera zmiennych argv i argc. Zmienne te są dostępne w tablicy $_SERVER. Obecność i kolejność dołączania zmiennych do tej tablicy zależy od dyrektywy konfiguracyjnej variables_order. Tablica ta nie posiada swoich odpowiedników we wcześniejszych wersjach PHP.

$_SESSION

Zmienne aktualnie zarejestrowane jako sesyjne. Analogiczne do dawnej tablicy $HTTP_SESSION_VARS (która jest wciąż dostępna, ale uznana za przestarzałą). Więcej informacji w rozdziale funkcje obsługi sesji.