суперглобальные переменные в php
Суперглобальный массивы были введены в PHP 4.1.0 и являются встроенными переменные, которые всегда доступны во всех областях.
PHP Суперглобальные переменные:
В этой главе будут описаны некоторые из суперглобальных массивах, а остальное будет объясняется в последующих главах.
Все PHP глобальные переменные хранятся в массиве [index]. index содержит имя переменной.
Пример
Пример
Элемент/Код | Описание |
---|---|
$_SERVER[‘PHP_SELF’] | Возвращает имя текущего выполняемого скрипта |
$_SERVER[‘GATEWAY_INTERFACE’] | Возвращает версию интерфейса общего шлюза (CGI) сервер с помощью |
$_SERVER[‘SERVER_ADDR’] | Возвращает IP-адрес хост-сервера |
$_SERVER[‘SERVER_NAME’] | Возвращает имя хост-сервера например,(www.schoolsw3.com) |
$_SERVER[‘SERVER_SOFTWARE’] | Возвращает строку идентификации сервера например,( Apache/2.2.24) |
$_SERVER[‘SERVER_PROTOCOL’] | Возвращает имя и Версию информационного протокола, например,( HTTP/1.1) |
$_SERVER[‘REQUEST_METHOD’] | Возвращает метод запроса, используемый для доступа к странице например,( POST) |
$_SERVER[‘REQUEST_TIME’] | Возвращает метку времени начала запроса например,( 1377687496) |
$_SERVER[‘QUERY_STRING’] | Возвращает строку запроса, если страница доступна через строку запроса |
$_SERVER[‘HTTP_ACCEPT’] | Возвращает заголовок Accept из текущего запроса |
$_SERVER[‘HTTP_ACCEPT_CHARSET’] | Возвращает заголовок Accept_Charset из текущего запроса например,( utf-8,ISO-8859-1) |
$_SERVER[‘HTTP_HOST’] | Возвращает заголовок узла из текущего запроса |
$_SERVER[‘HTTP_REFERER’] | Возвращает полный URL-адрес текущей страницы (не надежный, потому что не все пользовательские агенты поддерживают его) |
$_SERVER[‘HTTPS’] | Является ли скрипт запросом через безопасный протокол HTTP |
$_SERVER[‘REMOTE_ADDR’] | Возвращает IP-адрес, с которого пользователь просматривает текущую страницу |
$_SERVER[‘REMOTE_HOST’] | Возвращает имя хоста, с которого пользователь просматривает текущую страницу |
$_SERVER[‘REMOTE_PORT’] | Возвращает порт, используемый на компьютере пользователя для связи с веб-сервер |
$_SERVER[‘SCRIPT_FILENAME’] | Возвращает абсолютный путь текущего выполняемого сценария |
$_SERVER[‘SERVER_ADMIN’] | Возвращает значение, заданное директиве SERVER_ADMIN на веб-сервере файл конфигурации (если скрипт выполняется на виртуальном хосте, это будет значение определено для этого виртуального хоста) например,( someone@schoolsw3.com) |
$_SERVER[‘SERVER_PORT’] | Возвращает порт на серверном компьютере, используемом веб-сервером для связи например,(80) |
$_SERVER[‘SERVER_SIGNATURE’] | Возвращает версию сервера и имя виртуального хоста, которые добавляются к странице, созданные сервером |
$_SERVER[‘PATH_TRANSLATED’] | Возвращает путь на основе файловой системы к текущему сценарию |
$_SERVER[‘SCRIPT_NAME’] | Возвращает путь текущего сценария |
$_SERVER[‘SCRIPT_URI’] | Возвращает URI текущей страницы |
Суперглобальные переменные в php
Примечание: Впервые появилась в PHP версии 4.1.0. В более ранних версиях используется переменная $HTTP_SERVER_VARS.
Вы можете не найти некоторый переменные, которые могут содержаться в массиве $_SERVER, если вы запускаете PHP из коммандной строки.
PHP_SELF
argv
Массив параметров, переданных сценарию. При использовании метода GET, он будет содержать строку запроса.
argc
Содержит номер параметров командной строки, переданных сценарию (если они переданы из командной строки).
GATEWAY_INTERFACE
Содержит версию CGI, которую использует веб-сервер (Например, CGI/1.1).
SERVER_NAME
Имя веб-сервера, под которым текущий скрипт выполняется. Если скрипт исполняется на виртуальном веб-сервере, переменная будет содержать имя веб-сервера, которое было определено для виртуального веб-сервера.
SERVER_SOFTWARE
Идентификационная строка веб-сервера, которая передается через заголовки при ответах на запросы сервера.
SERVER_PROTOCOL
Имя и версия используемого протокола HTTP (Например, HTTP/1.1).
REQUEST_METHOD
Используемый метод запроса веб-страницы ( ‘GET’, ‘HEAD’, ‘POST’, ‘PUT’ ).
REQUEST_TIME
Время начала запроса веб-страницы. Доступна, начиная с PHP 5.1.0
QUERY_STRING
Строка запроса веб-страницы, если она существует, через которую был получен доступ к странице.
DOCUMENT_ROOT
Корневая директория, под которой выполняется текущий скрипт. Определяется конфигурацией веб-сервера.
HTTP_ACCEPT
Содержание заголовка Accept, если он есть.
HTTP_ACCEPT_CHARSET
Содержание заголовка Accept-Charset, если он есть. Пример: ‘ iso-8859-1,*,utf-8 ‘.
HTTP_ACCEPT_ENCODING
Содержание заголовка Accept-Encoding, если он есть. Пример: ‘ gzip ‘.
HTTP_ACCEPT_LANGUAGE
Содержание заголовка Accept-Language, если он есть. Пример: ‘ en ‘.
HTTP_CONNECTION
Содержание заголовка Connection, если он есть. Пример: ‘ Keep-Alive ‘.
HTTP_HOST
Содержание заголовка Host, если он есть.
HTTP_REFERER
Адрес страницы, которая ссылается на текущий документ посредством пользовательского клиента (программное обеспечение клиента). Не все пользовательские клиенты предоставляют данную информацию, а некоторые из них способны изменять HTTP_REFERER, следовательно, такой информации полностью доверять нельзя.
HTTP_USER_AGENT
Содержание заголовка ‘User-Agent’. Эта строка содержит информацию о пользовательском клиенте (программное обеспечение клиента), который обращается к странице. Типичный пример: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). Для получения подобной информации вы также можете использовать функцию get_browser()
REMOTE_ADDR
IP-адрес удаленного пользователя, который обращается к текущей странице.
REMOTE_HOST
Имя хоста удаленного пользователя, который обращается к текущей странице. Реверсивный поиск DNS базируется на REMOTE_ADDR удаленного пользователя. Примечание: веб-сервер должен поддерживать создание данной переменной. Например, в Apache опция HostnameLookups должна быть включена в конфигурационном файле httpd.conf (On). Смотрите также: gethostbyaddr()
REMOTE_PORT
Порт, используемый для соединения с веб-сервером
SCRIPT_FILENAME
Абсолютный путь для текущего скрипта.
SERVER_ADMIN
Значение, задаваемое SERVER_ADMIN (для Apache). Определяется директивой конфигурации веб-сервера. Если скрипт исполняется на виртуальном хосте, то значение определяется текущими настройками виртуального хоста веб-сервера.
SERVER_PORT
Текущий порт веб-сервера, используемы для предечи данных по протоколу HTTP. По-умолчанию ’80’.
SERVER_SINGATURE
Строка, содержащая версию веб-сервера или имя виртуального хоста.
PATH_TRANSLATED
Базовый путь к текущему сценарию.
SCRIPT_NAME
Содержит путь и имя файла текущего исполняемого скрипта.
REQUEST_URI
URI для текущей страницы, например, ‘ /index.html ‘.
PHP_AUTH_DIGEST
Если PHP работает как модуль Apache, переменная используется в аутентификации по протоколу HTTP, для проверки подлинности.
PHP_AUTH_USER
Если PHP работает как модуль Apache, либо как ISAPI IIS, данная переменная содержит имя авторизируемого пользователя при аутентификации по протоколу HTTP.
PHP_AUTH_PW
Если PHP работает как модуль Apache, либо как ISAPI IIS, данная переменная содержит пароль авторизируемого пользователя при аутентификации по протоколу HTTP.
AUTH_TYPE
Если PHP работает как модуль Apache, либо как ISAPI IIS, данная переменная содержит тип используемой аутентификации по протоколу HTTP.
Эти переменные импортируются в глобальное пространство имен PHP, из среды, в которой работает интерпретатор PHP. Число и типы переменных зависят от оболочки, в которой работает PHP, поэтому список этих переменных привести невозможно. Смотрите документацию по оболочке, которую вы используете, чтобы ознакомиться со списком ваших переменных окружения.
Некоторые переменные окружения содержатся в переменных CGI, если вы используете PHP как CGI.
Ассоциативный массив переменных, передаваемый текущему сценарию посредством HTTP Cookies.
Ассоциативный массив переменных, передаваемый текущему сценарию посредством HTTP GET запросов.
Ассоциативный массив переменных, передаваемый текущему сценарию посредством HTTP POST запросов.
Ассоциативный массив переменных, передаваемый текущему сценарию посредством HTTP POST запросов.
Доступны, начиная с PHP версии 4.1.0. В более ранних версиях PHP не имеет эквивалентов. Начиная с PHP версии 4.3.0 $_REQUEST включает также $_FILES.
Ассоциативный массив, содержащий переменные сессий, доступные для текущего скрипта. Для получения дополнительной информации, смотрите функции для работы с сессиями.
Глобальные переменные доступны, начиная с PHP3.
Переменная $php_errormsg содержит сообщение последней ошибки PHP скрипта.
Эта переменная будет доступна только в пределах области, в которой произошла ошибка, и только если опция track_errors конфигурации включена (по умолчанию она отключена).
Суперглобальные переменные в php
= 1 ; /* глобальная область видимости */
Ключевое слово global
Сначала пример использования global :
Пример #1 Использование global
Пример #3 Суперглобальные переменные и область видимости
Использование ключевого слова global вне функции не является ошибкой. Оно может быть использовано в файле, который включается внутри функции.
Использование статических ( static ) переменных
Другой важной особенностью области видимости переменной является статическая переменная. Статическая переменная существует только в локальной области видимости функции, но не теряет своего значения, когда выполнение программы выходит из этой области видимости. Рассмотрим следующий пример:
Пример #4 Демонстрация необходимости статических переменных
Пример #5 Пример использования статических переменных
Пример #6 Статические переменные и рекурсивные функции
Статическим переменным можно присвоить значения, являющиеся результатом выражения, но нельзя использовать для этого функцию, так это вызовет ошибку разбора.
Пример #7 Объявление статических переменных
Статические объявления вычисляются во время компиляции скрипта.
Ссылки с глобальными ( global ) и статическими ( static ) переменными
Результат выполнения данного примера:
$obj1 = get_instance_ref ();
$still_obj1 = get_instance_ref ();
echo «\n» ;
$obj2 = get_instance_noref ();
$still_obj2 = get_instance_noref ();
?>
Результат выполнения данного примера:
Этот пример демонстрирует, что при присвоении ссылки статической переменной она не запоминается, когда вы вызываете функцию &get_instance_ref() во второй раз.
User Contributed Notes 42 notes
Some interesting behavior (tested with PHP5), using the static-scope-keyword inside of class-methods.
$a = new sample_class ();
$b = new sample_class ();
Maybe it’s senseless to post that.. cause if you want to have the behaviour that I expected, you can simply use a variable of the object itself:
Please note for using global variable in child functions:
This won’t work correctly.
function foo () <
$f_a = ‘a’ ;
Static variables do not hold through inheritance. Let class A have a function Z with a static variable. Let class B extend class A in which function Z is not overwritten. Two static variables will be created, one for class A and one for class B.
Look at this example:
As you can see, class A and B are using different static variables even though the same function was being used.
Took me longer than I expected to figure this out, and thought others might find it useful.
I created a function (safeinclude), which I use to include files; it does processing before the file is actually included (determine full path, check it exists, etc).
Problem: Because the include was occurring inside the function, all of the variables inside the included file were inheriting the variable scope of the function; since the included files may or may not require global variables that are declared else where, it creates a problem.
My solution: Thus, to make all my global variables available to the files included with my safeinclude function, I had to add the following code to my safeinclude function (before variables are used or file is included)
Pretty simple approach that I could not find anywhere online; only other approach I could find was using PHP’s eval().
Take to heart this hard-won rule:
Declare AT THE TOP any variable that is to be global.
Both at the top of the FILE
AND at the top of any FUNCTION where it appears.
Why AT THE TOP? So it is sure to be declared before use. Otherwise a non-global version of the variable will be created and your code will fail.
Why at the top of a FUNCTION? Because otherwise the function will refer only to its local version of the variable and your code will fail.
Why at the top of the FILE? Because someday—a day that you cannot now imagine—you will want to «include» the file. And when you do, instances of the variable outside functions will not go in the global scope and your code will fail. (When the «include» is inside a calling function, variables in the included file go into the scope of the calling function.)