Добро пожаловать!
Здесь вы можете найти ответ на интересующий вас вопрос в отрасли сайтостроения, познакомится ближе с web технологиями и web стандартами.

Предопределенные переменные PHP.

Любому запускаемому скрипту 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.somehost.ru/test.php?id=3 вместо $id, или $_ENV['HOME'] вместо $HOME.

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

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

Чтобы получить полный список переменных web-сервера, окружения и РНР, определенных для вашей конфигурации системы, достаточно выполнить следующий скрипт:

<?php
  
echo "<h2>Переменные окружения сервера \$_SERVER[]</h2>\n";
  echo 
"<table border='1' cellspacing='0' cellpadding='4'>\n";
  foreach(
$_SERVER as $index => $val)
  {
      echo 
"<tr><td>".$index."</td><td>".$val."</td></tr>\n";
  }
  echo 
"</table>\n";
  echo 
"<h2>Глобальные переменные \$GLOBALS[]</h2>\n";
  echo 
"<table border='1' cellspacing='0' cellpadding='4'>\n";
  foreach(
$GLOBALS as $index => $val)
  {
      echo 
"<tr><td>".$index."</td><td>".$val."</td></tr>\n";
  }
  echo 
"</table>\n";
  
// и так далее ...
?>

Суперглобальные массивы.

$GLOBALS
Содержит ссылку на каждую переменную, доступную в данный момент в глобальной области видимости скрипта. Ключами этого массива являются имена глобальны переменных.
$_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 (который по-прежнему доступен, но не рекомендуется).
$_ENV
Переменные, передаваемые скрипту через окружение. Аналог старого массива $HTTP_ENV_VARS (который по-прежнему доступен, но не рекомендуется).
$_REQUEST
Переменные, передаваемые скрипту через механизмы ввода GET, POST и COOKIE, и которым, следовательно, нельзя доверять. Наличие и порядок включения переменных в этот массив определяется в соответствии с директивой конфигурации PHP variables_order. Этот массив не имеет прямых аналогов в версиях PHP до 4.1.0.
$_SESSION
Переменные, зарегистрированные на данный момент в сессии скрипта. Аналог старого массива $HTTP_SESSION_VARS (который по-прежнему доступен, но не рекомендуется).