Предефинирани променливи

PHP предоставя голям брой предефинирани променливи във всеки скрипт, който стартира. Много от тези променливи, обаче, не могат да бъдат напълно документирани, тъй като те са зависими от това кой сървър работи, версията и устройството на сървъра, както и от други фактори. Някои от тези променливи няма да бъдат налични, когато PHP се пусне на командния ред. За списък с тези променливи, моля вижда раздела в Запазени Предефинирани Променливи.

Внимание

В PHP 4.2.0 и по-късно, стойността по подразбиране на PHP директивата register_globals е off (изключено). Това е значителна промяна в PHP. register_globals бидейки off влияе на набора от предефинирани порменливи, налични в глобалния обхват. Например, за да вземете DOCUMENT_ROOT ще използвате $_SERVER['DOCUMENT_ROOT'] вместо $DOCUMENT_ROOT, или $_GET['id'] от URL-а http://www.example.com/test.php?id=3 вместо $id, или $_ENV['HOME'] вместо $HOME.

За информация, свързана с тази промяна, прочетете конфигурационната точка за register_globals, главата по сигурността в Използване на Регистриране на Глобални , също както и PHP 4.1.0 и 4.2.0 пусковите анонси.

Използването на наличните PHP Запазени Предефинирани Променливи, като суперглобалните масиви, е за предпочитане.

От версия 4.1.0 нататък, PHP предоставя допълнителен набор от предефинирани масиви, съдържащи променливи от уеб сървъра (ако е приложимо), от обкръжението, и от потребителския вход. Тези нови масиви са по-специални с това, че са автоматично глобални, т.е. автоматично налични във всеки обхват. Поради тази причина, те често биват познавани като 'автоглобални' или 'суперглобални'. (Няма механизъм в PHP за потребителски дефинирани суперглобални.) Суперглобалните са изброени по-долу; все пак, за списък с тяхното съдържание и по-нататъшна дискусия за предефинираните променливи в PHP и тяхната същност, моля вижте раздела Запазени Предефинирани Променливи. Също, ще забележите, че старите предефинирани променливи ($HTTP_*_VARS) все още съществуват. От PHP 5.0.0, дългите PHP предефинирани променливи могат да бъдат изключени посредством register_long_arrays директивата.

Променливи променливи: Суперглобалните не могат да бъдат използвани като променливи променливи във функции или методи на клас.

Забележка: Макар че и двете - суперглобалните и HTTP_*_VARS, могат да съществуват едновременно, те не са идентични, така че модифицирането на едното няма да промени другото.

Ако някои променливи в variables_order не са зададени, съответните им PHP предефинирани масиви също остават празни.

PHP Суперглобални

$GLOBALS

Съдържа референция към всяка променлива, която текущо е налична в глобалния обхват на скрипта. Ключовете на този масив са имената на глобалните променливи. $GLOBALS съществува от PHP 3.

$_SERVER

Променливи, присвоени от уеб сървъра или иначе пряко свързани с обкръжението на изпълнение на текущия скрипт. Аналогичен на стария масив $HTTP_SERVER_VARS (който все още е наличен, но не е препоръчителен).

$_GET

Променливи, предоставени на скрипта чрез URL низа за питане (query string). Аналогичен на стария масив $HTTP_GET_VARS (който все още е наличен, но не е препоръчителен).

$_POST

Променливи, предоставени на скрипта чрез HTTP POST. Аналогичен на стария масив $HTTP_POST_VARS (който все още е наличен, но не е препоръчителен).

$_COOKIE

Променливи, предоставени на скрипта чрез HTTP бисквитки. Аналогичен на стария масив $HTTP_COOKIE_VARS (който все още е наличен, но не е препоръчителен).

$_FILES

Променливи, предоставени на скрипта чрез HTTP post файлови качвания. Аналогичен на стария масив $HTTP_POST_FILES (който все още е наличен, но не е препоръчителен). Вж. POST метод качвания за повече информация.

$_ENV

Променливи, предоставени на скрипта чрез обкръжението. Аналогичен на стария масив $HTTP_ENV_VARS (който все още е наличен, но не е препоръчителен).

$_REQUEST

Променливи, предоставени на скрипта чрез входящите механизми GET, POST и COOKIE, и на които по тази причина не може да се вярва. Съществуването и редът на вмъкванията на променливи в този масив са дефинирани съгласно конфигурационната директива variables_order. Този масив няма пряк аналог във версии на PHP преди 4.1.0. Вж. също import_request_variables().

Внимание

От PHP 4.3.0, файловата информацията от $_FILES не е налична в $_REQUEST.

Забележка: При пускане от командния ред , това няма да включи записите argv и argc; те са налични в масива $_SERVER.

$_SESSION

Текущите променливи, които са регистрирани в сесията на скрипт. Аналогичен на стария масив $HTTP_SESSION_VARS (който все още е наличен, но не е препоръчителен). Вж. раздел Функции за управление на сесия за повече информация.