Zmienne predefiniowane

PHP udostępnia dużą ilość predefiniowanych zmiennych dla każdego pracującego skryptu. 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ń.

Niezależnie od wymienionych czynników, poniżej przedstawiamy listę predefiniowanych zmiennych, dostępnych w typowej instalacji PHP 3, działającej jako moduł typowej instalacji Apache 1.3.6.

W celu zapoznania się ze wszystkimi predefiniowanymi zmiennymi (i mnóstwem innych, użytecznych informacji) użyj phpinfo().

Notatka: Poniższa lista nie jest i nie będzie wyczerpująca. Jest to wyłącznie wskazówka, jakich rodzajów predefiniowanych zmiennych możesz użyć w swoim skrypcie.

Zmienne Apache'a

Zmienne te dostarczane są przez serwer www Apache. Jeśli używasz innego serwera, nie ma żadnej gwarancji, że zmienne te będą dostępne. Inny serwer może pominąć jakąś zmienną lub dostarczać zmienne inne niż te. Jakkolwiek spora część tych zmiennych jest zarejestrowana w specyfikacji CGI 1.1, więc dostęp do nich powinien być możliwy.

Pamiętaj, że tylko kilka, jeśli w ogóle, spośród tych zmiennych jest dostępnych (albo będzie mieć jakiekolwiek znaczenie) kiedy skrypt PHP jest uruchomiony z linii poleceń.

$GATEWAY_INTERFACE

Określa wersję specyfikacji CGI obsługiwaną przez serwer, np. "CGI/1.1".

$SERVER_NAME

Nazwa hosta serwera, na którym skrypt jest wykonywany. Jeśli skrypt pracuje na hoście wirtualnym (ang. virtual host), zmienna będzie zawierać nazwę hosta wirtualnego.

$SERVER_SOFTWARE

Napis identyfikujący serwer, wysyłany z nagłówkami przy odpowiedzi na zapytanie.

$SERVER_PROTOCOL

Nazwa i wersja protokołu informacyjnego, przez który zostało wysłane zapytanie, np. "HTTP/1.1".

$REQUEST_METHOD

Metoda, która została użyta przy zapytaniu o dokument, np. "GET", "HEAD", "POST".

$QUERY_STRING

Łańcuch zapytania (np. ?foo=bar), o ile istnieje, jaki został przesłany z zapytaniem o stronę.

$DOCUMENT_ROOT

Folder główny na serwerze, taki jak określony w pliku konfiguracyjnym serwera.

$HTTP_ACCEPT

Zawartość nagłówka Accept: z aktualnego zapytania, o ile taki występuje.

$HTTP_ACCEPT_CHARSET

Zawartość nagłówka Accept-Charset: z aktualnego zapytania, o ile taki występuje, np. "iso-8859-1,*,utf-8". 'iso-8859-1,*,utf-8'.

$HTTP_ACCEPT_ENCODING

Zawartość nagłówka Accept-Encoding: z aktualnego zapytania, o ile taki występuje, np. "gzip".

$HTTP_ACCEPT_LANGUAGE

Zawartość nagłówka Accept-Language: z aktualnego zapytania, o ile taki występuje, np. "en".

$HTTP_CONNECTION

Zawartość nagłówka Connection: z aktualnego zapytania, o ile taki występuje, np. "Keep-Alive".

$HTTP_HOST

Zawartość nagłówka Host: z aktualnego zapytania, o ile taki występuje.

$HTTP_REFERER

Adres strony (o ile występuje) z której przeglądarka przeszła do tej strony. Nagłówek jest tworzony przez przeglądarkę użytkownika; nie wszystkie przeglądarki udostępniają taką informację.

$HTTP_USER_AGENT

Zawartość nagłówka User_Agent: z aktualnego zapytania, o ile taki występuje. Jest to napis identyfikujący oprogramowanie klienckie używane do obejrzenia danej strony, np. Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). Można użyć tej informacji w połączeniu z get_browser(), aby dopasować stronę do możliwości przeglądarki użytkownika.

$REMOTE_ADDR

Numer IP zdalnego użytkownika przeglądającego stronę.

$REMOTE_PORT

Port używany na zdalnej maszynie, przez który następuje komunikacja z serwerem.

$SCRIPT_FILENAME

Bezwzględna ścieżka do aktualnie wykonywanego skrytpu.

$SERVER_ADMIN

Wartość podana w dyrektywie SERVER_ADMIN (dla Apache'a) w pliku konfiguracyjnym serwera. Jeśli skrypt jest uruchomiony na hoście wirtualnym, wtedy będzie to wartość określona dla tego hosta wirtualnego.

$SERVER_PORT

Port na serwerze, używany przez serwer www do komunikacji. Domyślnie jest to "80"; przy użyciu SSL, na przykład, będzie to numer portu na którym odbywają się zabezpieczone połączenia HTTP.

$SERVER_SIGNATURE

Napis zawierający nazwę i wersję serwera, oraz nazwę wirtualnego hosta, który jest dodawany do stron generowanych przez serwer, o ile włączony.

$PATH_TRANSLATED

Bezwzględna ścieżka do pliku, oparta na systemie plików (a nie wychodząca z folderu głównego serwera), określona po wykonaniu przez serwer ewentualnego mapowania ścieżki wirtualnej do rzeczywistej.

$SCRIPT_NAME

Zawiera ścieżkę do aktualnego skryptu. Przydatne przy stronach, które mają wskazywać na siebie same.

$REQUEST_URI

URI, który został podany, aby uzyskać dostęp do aktualnej strony, np. "/index.html".

Zmienne środowiskowe

Te zmienne są importowane do przestrzeni nazw globalnych PHP ze środowiska w jakim pracuje parser PHP. Wiele z nich jest udostępnianych przez powłokę systemu, w którym pracuje PHP, a ponieważ różne systemy używają różnych powłok, ścisła lista nie jest możliwa. Zapoznaj się z dokumentacją twojej powłoki (shella), aby dowiedzieć się, jakie zmienne środowiskowe ona udostępnia.

Niektóre zmienne środowiskowe zawierają zmienne CGI, w zależności od tego czy PHP pracuje jako moduł serwera, czy skrypt CGI.

Zmienne PHP

Zmienne te tworzone są przez PHP. Zmienne $HTTP_*_VARS są dostępne tylko, jeśli dyrektywa konfiguracyjna track_vars jest włączona. Kiedy dyrektywa jest włączona, zmienne są zawsze tworzone, nawet jeśli są pustymi tablicami. Zabezpiecza to przed złośliwymi użytkownikami, którzy mogliby podszywać swoje wartości pod te zmienne.

Notatka: Od PHP 4.0.3 dyrektywa track_vars jest zawsze włączona, niezależnie od wpisu w pliku konfiguracyjnym.

Notatka: Nowe "Superglobale" zostały dodane w PHP 4.1.0. Więcej szczegółów znajduje się w 4.1.0 Release Announcement. Są to tablice $_GET, $_POST, $_ENV, $_SERVER, $_COOKIE, $_REQUEST, $_FILES i $_SESSION; nieformalnie zwane Superglobale, ponieważ są zawsze dostępne dla programisty, niezależnie od aktualnego zasięgu innych zmiennych. Powyższe zmienne zastępują starsze tablice $HTTP_*_VARS.

Jeśli dyrektywa register_globals jest włączona, wtedy te zmienne będą również dostępne jako zmienne globalne, tzn. niezależnie od tablic $HTTP_*_VARS i $_*. Więcej informacji znajduje się w rozdziale poświęconym bezpieczeństwu, zatytułowanym Wykorzystywanie Zarejestrowanych Globali.

$argv

Tablica argumentów przekazanych do skryptu. Kiedy skrypt jest uruchamiany z linii poleceń, daje ona dostęp w stylu języka C do przełączników, z jakimi został wywołany skrypt. Kiedy skrypt zostanie wywołany metodą GET, tablica będzie zawierać łańcuch znaków zapytania (query string).

$argc

Liczba argumentów przekazanych do skryptu (jeśli uruchamiany z linii poleceń).

$PHP_SELF

Nazwa pliku aktualnie wykonywanego skryptu, ze ścieżką względną od głównego katalogu (document root). Jeśli PHP jest wywołane z linii poleceń, zmienna jest niedostępna. Zmienna ta zawiera informację o ścieżce do pliku, o ile taka istnieje (np. $PHP_SELF pod takim adresem: "http://example.com/test.php/foo.bar" zawierać będzie "/test.php/foo.bar").

$HTTP_COOKIE_VARS

Tablica asocjacyjna zmiennych przekazanych do skryptu przez ciasteczka HTTP.

$_COOKIE

Tablica asocjacyjna zmiennych przekazanych do skryptu przez ciasteczka HTTP. Zawsze globalna w każdym zasięgu. Wprowadzona w PHP 4.1.0.

$HTTP_GET_VARS

Tablica asocjacyjna zmiennych przekazanych do skryptu metodą GET protokołu HTTP.

$_GET

Tablica asocjacyjna zmiennych przekazanych do skryptu metodą GET protokołu HTTP. Zawsze globalna w każdym zasięgu. Wprowadzona w PHP 4.1.0.

$HTTP_POST_VARS

Tablica asocjacyjna zmiennych przekazanych do skryptu metodą POST protokołu HTTP.

$_POST

Tablica asocjacyjna zmiennych przekazanych do skryptu metodą POST protokołu HTTP. Zawsze globalna w każdym zasięgu. Wprowadzona w PHP 4.1.0.

$HTTP_POST_FILES

Tablica asocjacyjna zmiennych zawierających informację o plikach wysłanych do serwera (uploadowanych) metodą POST. Zobacz wysyłanie plików metodą POST aby dowiedzieć się więcej na temat zawartości $HTTP_POST_FILES. Wprowadzona w PHP 4.0.0.

$_FILES

Tablica asocjacyjna zmiennych zawierających informację o plikach wysłanych do serwera (uploadowanych) metodą POST. Zobacz wysyłanie plików metodą POST aby dowiedzieć się więcej na temat zawartości $_FILES. Zawsze globalna w każdym zasięgu. Wprowadzona w PHP 4.1.0.

$HTTP_ENV_VARS

Tablica asocjacyjna zmiennych przekazanych do skryptu ze środowiska operacyjnego serwera.

$_ENV

Tablica asocjacyjna zmiennych przekazanych do skryptu ze środowiska operacyjnego serwera. Zawsze globalna w każdym zasięgu. Wprowadzona w PHP 4.1.0.

$HTTP_SERVER_VARS

Tablica asocjacyjna zmiennych przekazanych do skryptu z serwera HTTP. Zmienne te są analogiczne do zmiennych Apache'a, opisanych powyżej.

$_SERVER

Tablica asocjacyjna zmiennych przekazanych do skryptu z serwera HTTP. Zmienne te są analogiczne do zmiennych Apache'a, opisanych powyżej. Zawsze globalna w każdym zasięgu. Wprowadzona w PHP 4.1.0.

$HTTP_SESSION_VARS

Tablica asocjacyjna zmiennych sesji przekazanych do skryptu.

$_SESSION

Tablica asocjacyjna zmiennych sesji przekazanych do skryptu. Zawsze globalna w każdym zasięgu. Dodawanie nowych wpisów do tablicy $_SESSION powoduje automatyczne zarejestrowanie ich jako zmiennych sesji, tak jakby wywołać session_register(). Wprowadzona w PHP 4.1.0.

$_REQUEST

Tablica asocjacyjna, stanowiąca połączenie zmiennych z GET, POST i ciasteczek. Innymi słowy - cała informacja przychodząca od użytkownika. Tablica ta z punktu widzenia bezpieczeństwa nie może być godna zaufania. Wprowadzona w PHP 4.1.0.