Руководство по PHP
Пред. | Глава 12. Переменные | След.

# Предопределенные переменные

Любому запускаемому скрипту PHP предоставляет большое количество предопределенных переменных. Однако, многие из этих переменных не могут быть полностью задокументированы, поскольку они зависят от запущенного сервера, его версии и настроек, а также других факторов. Некоторые из этих переменных не доступны, когда PHP запущен из командной строки. Перечень этих переменных смотрите в разделе Зарезервированные предопределенные переменные.

Внимание

Начиная с PHP 4.2.0, значение директивы 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 в разделе о настройках, главу о безопасности Использование Register Globals , а также сообщения о выпусках PHP 4.1.0 и 4.2.0.

Использование доступных зарезервированных предопределенных переменных PHP, таких как суперглобальные массивы, является предпочтительным.

Начиная с версии 4.1.0, PHP предоставляет дополнительный набор предопределенных массивов, содержащих переменные web-сервера (если они доступны), окружения и пользовательского ввода. Эти новые массивы являются особыми, поскольку они автоматически глобальны--то есть, автоматически доступны в любой области видимости. По этой причине они также известны как 'автоглобальные' или 'суперглобальные' переменные. (В PHP нет механизма определяемых пользователем суперглобальных переменных.) Суперглобальные переменные перечислены ниже; однако, перечисление их содержимого и дальнейшее обсуждение предопределенных переменных PHP и их сути смотрите в разделе Зарезервированные предопределенные переменные. Также вы заметите, что старые предопределенные переменные (`$HTTP_*_VARS`) все еще существуют. Начиная с PHP 5.0.0, длинные предопределенные переменные массивов PHP могут быть отключены директивой register_long_arrays.

> Переменные переменных: Суперглобальные переменные не могут быть переменными переменных.

Если некоторые из переменных в variables_order не установлены, соответствующие им предопределенные массивы также останутся пустыми.

Суперглобальные переменные PHP

$GLOBALS

  Содержит ссылку на каждую переменную, доступную в данный момент в глобальной области видимости скрипта. Ключами этого массива являются имена глобальны переменных. `$GLOBALS` существует, начиная с PHP 3.

$_SERVER

  Переменные, установленные web-сервером либо напрямую связанные с окружением выполнения текущего скрипта. Аналог старого массива `$HTTP_SERVER_VARS` (который по-прежнему доступен, но не рекомендуется).

$_GET

  Переменные, передаваемые скрипту через HTTP GET. Аналог старого массива `$HTTP_GET_VARS` (который по-прежнему доступен, но не рекомендуется).

$_POST

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

$_COOKIE

  Переменные, передаваемые скрипту через HTTP cookies. Аналог старого массива `$HTTP_COOKIE_VARS` (который по-прежнему доступен, но не рекомендуется).

$_FILES

  Переменные, передаваемые скрипту через HTTP post-загрузку файлов. Аналог старого массива `$HTTP_POST_FILES` (который по-прежнему доступен, но не рекомендуется). Для дополнительной информации смотрите Загрузка методом POST.

$_ENV

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

$_REQUEST

  Переменные, передаваемые скрипту через механизмы ввода GET, POST и COOKIE, и которым, следовательно, нельзя доверять. Наличие и порядок включения переменных в этот массив определяется в соответствии с директивой конфигурации PHP variables_order. Этот массив не имеет прямых аналогов в версиях PHP до 4.1.0. Смотрите также import_request_variables().

  Предостережение
  Начиная с PHP 4.3.0, информация о файле из `$_FILES` больше не существует в `$_REQUEST`.

  > Замечание: При запуске из командной строки , этот массив не будет содержать записей `argv` и `argc`; они находятся в массиве `$_SERVER`.

$_SESSION

  Переменные, зарегистрированные на данный момент в сессии скрипта. Аналог старого массива `$HTTP_SESSION_VARS` (который по-прежнему доступен, но не рекомендуется). Дополнительную информацию смотрите в разделе Функции обработки сессии.

Пред. | Начало | След.
Переменные | Уровень выше | Область видимости переменной