English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Суперглобальные переменные были включены в PHP с версии 4.1.0 и являются частью системы PHP, они доступны на всем протяжении скрипта.
В PHP предварительно определены несколько суперглобальных переменных (superglobals), что означает, что они доступны на всем протяжении скрипта. Вам не нужно особо указывать, чтобы использовать их в функции и классе.
Список суперглобальных переменных PHP:
$GLOBALS
$_SERVER
$_REQUEST
$_POST
$_GET
$_FILES
$_ENV
$_COOKIE
$_SESSION
В этой главе мы рассмотрим несколько常用的 суперглобальных переменных, а其余 переменные будут рассмотрены в следующих главах.
$GLOBALS - это суперглобальная переменная PHP, которую можно использовать в любом месте скрипта.
$GLOBALS - это глобальный комбинированный массив, который содержит все переменные. Имя переменной является ключом массива.
В следующем примере介绍, как использовать суперглобальные переменные $GLOBALS:
<?php $x = 75; $y = 25; function addition() { $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; } addition(); echo $z; ?>Проверьте, как это работает ‹/›
В предыдущем примере z - это суперглобальная переменная массива $GLOBALS, которая также доступна вне функции.
$_SERVER - это массив, который содержит информацию, такую как заголовки (header), пути (path) и местоположение скрипта (script locations), и который создается веб-сервером. Не гарантируется, что каждый сервер предоставляет все элементы; сервер может пропустить некоторые из них или предоставить такие, которые не перечислены здесь.
В следующем примере показано, как использовать элементы $_SERVER:
<?php echo $_SERVER['PHP_SELF']; echo "<br>"; echo $_SERVER['SERVER_NAME']; echo "<br>"; echo $_SERVER['HTTP_HOST']; echo "<br>"; echo $_SERVER['HTTP_REFERER']; echo "<br>"; echo $_SERVER['HTTP_USER_AGENT']; echo "<br>"; echo $_SERVER['SCRIPT_NAME']; ?>Проверьте, как это работает ‹/›
В таблице ниже перечислены важные элементы всех переменных $_SERVER:
Элемент/код | Описание |
---|---|
$_SERVER['PHP_SELF'] | Имя файла текущего скрипта, связанное с корневой директорией документа. Например, в скрипте по адресу http://example.com/test.php/foo.bar использование $_SERVER['PHP_SELF'] возвращает /test.php/foo.bar. Константа __FILE__ содержит полный путь и имя текущего (например, включенного) файла. С PHP 4.3.0, если PHP запущен в режиме командной строки, этот переменной будет содержать имя скрипта. В более ранних версиях переменная была недоступна. |
$_SERVER['GATEWAY_INTERFACE'] | Версия спецификации CGI, используемой сервером; например, "CGI/1.1". |
$_SERVER['SERVER_ADDR'] | IP-адрес сервера, на котором выполняется текущий скрипт. |
$_SERVER['SERVER_NAME'] | Имя хоста сервера, на котором выполняется текущий скрипт. Если скрипт выполняется на виртуальном хосте, это имя определяет виртуальный хост. (например: ru.oldtoolbag.com) |
$_SERVER['SERVER_SOFTWARE'] | Строка идентификации сервера, предоставляемая в заголовках ответа при обработке запроса. (например: Apache/2.2.24) |
$_SERVER['SERVER_PROTOCOL'] | Название и версия протокола передачи данных, используемого для запроса страницы. Например, "HTTP/1.0". |
$_SERVER['REQUEST_METHOD'] | Метод запроса, используемый для доступа к странице; например, "GET", "HEAD", "POST", "PUT". |
$_SERVER['REQUEST_TIME'] | Временная метка начала запроса. Доступно с PHP 5.1.0. (например: 1377687496) |
$_SERVER['QUERY_STRING'] | Строка запроса (query string), если она существует, через которую происходит доступ к странице. |
$_SERVER['HTTP_ACCEPT'] | Содержание элемента Accept: в текущей заголовочной строке запроса, если он существует. |
$_SERVER['HTTP_ACCEPT_CHARSET'] | Содержание элемента Accept-Charset: в текущей заголовочной строке запроса, если он существует. Например: "iso-8859-1,*,utf-8". |
$_SERVER['HTTP_HOST'] | Содержание элемента Host: в текущей заголовочной строке запроса, если он существует. |
$_SERVER['HTTP_REFERER'] | Адрес предыдущей страницы, к которой пользователя направляет агент пользователя (если она существует). Определяется настройками user agent. Не все агенты пользователя устанавливают это значение, некоторые даже предоставляют функцию для изменения HTTP_REFERER. Короче говоря, это значение не всегда надежно.) |
$_SERVER['HTTPS'] | Если скрипт доступен через протокол HTTPS, то это значение будет установлено в пустую строку. |
$_SERVER['REMOTE_ADDR'] | IP-адрес пользователя, просматривающего текущую страницу. |
$_SERVER['REMOTE_HOST'] | Имя хоста пользователя, просматривающего текущую страницу. DNS обратный поиск не зависит от REMOTE_ADDR пользователя. |
$_SERVER['REMOTE_PORT'] | Порт, используемый для подключения к веб-серверу на машине пользователя. |
$_SERVER['SCRIPT_FILENAME'] | Абсолютный путь к выполняемому скрипту. |
$_SERVER['SERVER_ADMIN'] | Значение указывает на параметр SERVER_ADMIN в файле конфигурации Apache сервера. Если скрипт выполняется на виртуальном хосте, то это значение равно значению того виртуального хоста (например: [email protected]). |
$_SERVER['SERVER_PORT'] | Порт, используемый веб-сервером. По умолчанию это "80". Если используется безопасное соединение SSL, то это значение равно порту HTTP, установленному пользователем. |
$_SERVER['SERVER_SIGNATURE'] | Строка, содержащая версию сервера и имя виртуального хоста. |
$_SERVER['PATH_TRANSLATED'] | Основной путь к файловой системе текущего скрипта (не каталог корня документа). Это результат после виртуализации в реальный путь на сервере. |
$_SERVER['SCRIPT_NAME'] | Включает путь к текущему скрипту. Это очень полезно, когда страница должна указывать на себя. Константа __FILE__ включает полный путь и имя файла текущего скрипта (например, включенных файлов). |
$_SERVER['SCRIPT_URI'] | URI используется для указания страницы, которую нужно посетить. Например, "/index.html". |
PHP $_REQUEST используется для сбора данных HTML формы.
Следующий пример показывает форму с полем ввода (input) и кнопкой отправки (submit): Когда пользователь отправляет данные формы, нажимая на кнопку "Submit", данные формы отправляются на скрипт, указанный в атрибуте action тега <form>. В этом примере мы указываем файл для обработки данных формы. Если вы хотите, чтобы другие файлы PHP обрабатывали данные, вы можете изменить имя указанного скрипта. Затем, мы можем использовать суперглобальные переменные $_REQUEST для сбора данных input полей формы:
<html> <body> <form method="post" action="<?php echo $_SERVER['PHP_SELF'];;"> Имя: <input type="text" name="fname"> <input type="submit"> </form> <?php $name = $_REQUEST['fname']; echo $name; ?> </body> </html>Проверьте, как это работает ‹/›
PHP $_POST также широко используется для сбора данных форм, в HTML теге form указывается свойство: "method="post".
Следующий пример показывает форму с полем ввода (input) и кнопкой отправки (submit): Когда пользователь отправляет данные формы, нажимая на кнопку "Submit", данные формы отправляются на скрипт, указанный в атрибуте action тега <form>. В этом примере мы указываем файл для обработки данных формы. Если вы хотите, чтобы другие файлы PHP обрабатывали данные, вы можете изменить имя указанного скрипта. Затем мы можем использовать супер глобальную переменную $_POST для сбора данных из поля input в форме:
<html> <body> <form method="post" action="<?php echo $_SERVER['PHP_SELF'];;"> Имя: <input type="text" name="fname"> <input type="submit"> </form> <?php $name = $_POST['fname']; echo $name; ?> </body> </html>Проверьте, как это работает ‹/›
PHP $_GET также широко используется для сбора данных форм, в HTML теге form указывается свойство: "method="get".
$_GET также может собирать данные, отправленные в URL.
Предположим, что у нас есть страница HTML с гиперссылкой, содержащей параметры:
<html> <body> <a href="test_get.php?subject=PHP&web=oldtoolbag.com">Test $GET</a> </body> </html>
Когда пользователь нажимает на ссылку "Test $GET", параметры "subject" и "web" будет отправлено в "test_get.php", и вы можете использовать переменную $_GET, чтобы получить эти данные в файле "test_get.php".
Следующий пример показывает код файла "test_get.php":
<html> <body> <?php echo "Изучение" . $_GET['subject'] . " @ " . $_GET['web']; ?> </body> </html>Проверьте, как это работает ‹/›
Совет: Если вы хотите узнать больше о $_POST и $_GET, пожалуйста, посетите наш Формы PHP Разделы.