Загрузка страницы

PHP - Суперглобальный массив $_SERVER

PHP - Суперглобальный массив $_SERVER

Одним из важнейших предопределённых массивов в PHP, является массив $_SERVER — в него пемещены переменные, полученные от сервера.
Ниже приводится описание наиболее важных элементов суперглобального массива $_SERVER.
Просмотреть полный список элементов массива $_SERVER можно либо при помощи функции print_r(); или var_dump();

Элемент $_SERVER['DOCUMENT_ROOT']
Элемент $_SERVER['DOCUMENT_ROOT'] содержит путь к корневой директории сервера, если скрипт выполняется в виртуальном хосте, в данном элементе указывается путь к корневой директории виртуального хоста. Т.е. в конфигурационном файле httpd.conf виртуальный хост имеет директиву DocumentRoot, которой присвоено значение "D:/localhost", элемент $_SERVER['DOCUMENT_ROOT'] будет содержать значение "D:localhost".

Элемент $_SERVER['HTTP_ACCEPT']
В элементе $_SERVER['HTTP_ACCEPT'] описываются предпочтения клиента относительно типа документа. Содержимое этого элемента извлекается из HTTP-заголовка Accept, который присылает клиент серверу. Содержимое данного заголовка может выглядеть следующим образом

 image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */* 


Заголовок Accept позволяет уточнить медиа-тип, который предпочитает получить клиент в ответ на свой запрос. Этот заголовок позволяет сообщить серверу, что ответ ограничен небольшим множеством предпочитаемых типов.
Символ * используется для группирования типов в медиа-ряду. К примеру, символом */* задается использование всех типов, а обозначение type/* определяет использование всех подтипов выбранного типа type.
Каждый медиа-ряд характеризуется также дополнительным набором параметров. Одним из них является так называемый относительный коэффициент предпочтения q, который принимает значения от 0 до 1, соответственно, от менее предпочитаемых типов к более предпочитаемым. Использование нескольких параметров q, позволяет клиенту сообщить серверу относительную степень предпочтения для того или иного медиа-типа.
По умолчанию параметр q принимает значение 1. Кроме того, от медиа-типа он отделяется точкой с запятой.
Пример заголовка типа Accept:
Accept: audio/*; q=0.2, audio/basic
В данном заголовке первым идёт тип audio/* включающий в себя все музыкальные документы и характеризующийся коэффициентом предпочтения 0.2. Через запятую указан тип audio/basic, для которого коэффициент предпочтения не указан и принимает значение по умолчанию равное единице.
Пример может быть более сложным.
Accept: text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c
Следует учитывать, что элемент $_SERVER['HTTP_ACCEPT'] содержит точно такую же информацию, но без начального заголовка Accept.
Этот заголовок интерпретируется следующим образом: Типы документов text/html и text/x-c являются предпочтительными, но если они недоступны, тогда клиент отсылающий данный запрос, предпочтёт text/x-dvi, а, если и его нет, то он может принять тип text/plain.

Элемент $_SERVER['HTTP_ACCEPT_LANGUAGE']
В элементе $_SERVER['HTTP_ACCEPT_LANGUAGE'] описываются предпочтения клиента относительно языка. Данная информация извлекается из HTTP-заголовка Accept-Language, который присылает клиент серверу. Можно привести следующий пример:
Accept-Language: ru, en; q=0.7
Который можно интерпретировать следующим образом: клиент предпочитает русский язык, но в случае его отсутствия согласен принимать документы на английском. Элемент $_SERVER['HTTP_ACCEPT_LANGUAGE'] будет содержать точно такую же информацию, но без заголовка Accept-Language: ru, en; q=0.7
Содержимое элемента $_SERVER['HTTP_ACCEPT_LANGUAGE'] можно использовать для определения национальной принадлежность посетителей. Однако результаты будут приблизительными, так как многие пользователи используют английские варианты браузеров, которые будут извещать сервер о том, что посетитель предпочитает лишь один язык — английский.

Элемент $_SERVER['HTTP_HOST']
В элементе $_SERVER['HTTP_HOST'] содержится имя сервера, которое, как правило, совпадает с доменным именем сайта, расположенного на сервере. Как правило, имя, указанное в данном параметре совпадает с именем $_SERVER['SERVER_NAME'].

Элемент $_SERVER['HTTP_REFERER']
В элементе $_SERVER['HTTP_REFERER'] приводится адрес страницы, с которой посетитель пришёл на данную страницу. Переход должен осуществляться по ссылке. Создадим две страницы index.php и page.php.
Страница index.php

<?php 
 
echo "|a href=page.php|Ссылка на страницу PHP|/a||br /|"
 echo 
"Содержимое $_SERVER[&#039;HTTP_REFERER&#039;] - "
 
$_SERVER[&#039;HTTP_REFERER&#039;] 
?>


Страница page.php будет аналогичного содержания, но ссылка будет указывать на страницу index.php.
Страница page.php

<?php 
 
echo "|a href=index.php|Ссылка на страницу PHP|/a||br /|"
 echo 
"Содержимое $_SERVER[&#039;HTTP_REFERER&#039;] - "
 
$_SERVER[&#039;HTTP_REFERER&#039;] 
?>



При переходе с одной страницы на другую, под ссылкой будет выводится адрес страницы, с которой был осуществлён переход.

Элемент $_SERVER['HTTP_USER_AGENT']
Элемент $_SERVER['HTTP_USER_AGENT'] содержит информацию о типе и версии браузера и операционной системы посетителя.
Вот приблизительное содержание этого элемента массива: "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)". Наличие подстроки "MSIE 6.0" говорит о том, что посетитель просматривает страницу при помощи Internet Explorer версии 6.0. Строка "Windows NT 5.1" сообщает, что в качестве операционной системы используется Windows XP.

Элемент $_SERVER['REMOTE_ADDR']
В элемент $_SERVER['REMOTE_ADDR'] помещается IP-адрес клиента. При тестировании на локальной машине — этот адрес будет равен 127.0.0.1. Однако при тестировании в сети переменная вернёт IP-адрес клиента или последнего прокси-сервера через который клиент попал на сервер. Если клиент использует прокси-сервер узнать его IP-адрес можно при помощи переменной окружения HTTP_X_FORWARDED_FOR, значение которой можно получить при помощи функции getenv().
Прокси-сервера являются специальными промежуточными серверами, предоставляющими специальный вид услуг: сжатие трафика, кодирование данных, адаптация под мобильные устройства и т.п. Среди множества прокси-серверов различают так называемые анонимные прокси-сервера, которые позволяют скрывать истинный IP-адрес клиента, такие сервера не возвращают переменной окружения HTTP_X_FORWARDED_FOR.
Извлечение переменной окружения HTTP_X_FORWARDED_FOR

<?php 
 
echo getenv(HTTP_X_FORWARDED_FOR); 
?>




Элемент $_SERVER['SCRIPT_FILENAME']
В элемент $_SERVER['SCRIPT_FILENAME'] помещается абсолютный путь к файлу от корня диска. Так, если сервер работает под управлением операционной системы Windows, то такой путь может выглядеть следующим образом "d:localhost/index.php", т.е. путь указывается от диска, в UNIX-подобной операционной системы путь указывается от корневой директории /, например "/var/share/www/test/index.php".

Элемент $_SERVER['SERVER_NAME']
В элемент $_SERVER['SERVER_NAME'] помещается имя сервера, как правило, совпадающее с доменным именем сайта, расположенного на нём.
Содержимое элемента $_SERVER['SERVER_NAME'] часто совпадает с содержимым элемента $_SERVER['HTTP_HOST']. Помимо имени сервера суперглобальный массив $_SERVER позволяет выяснить ещё ряд параметров сервера, например IP-адрес сервера, прослушиваемый порт, какой Web-сервер установлен и версию HTTP протокола. Эта информация помещается в элементы $_SERVER['SERVER_ADDR'], $_SERVER['SERVER_PORT'], $_SERVER['SERVER_SOFTWARE'] и $_SERVER['SERVER_PROTOCOL'], соответственно. Ниже приводится пример с использованием данных элементов.

<?php 
 
echo "Имя сервера - ".$_SERVER[&#039;SERVER_NAME&#039;]."|br /|"; 
 
echo "IP-адрес сервера - ".$_SERVER[&#039;SERVER_ADDR&#039;]."|br /|"; 
 
echo "Порт сервера - ".$_SERVER[&#039;SERVER_PORT&#039;]."|br /|"; 
 
echo "Web-сервер - ".$_SERVER[&#039;SERVER_SOFTWARE&#039;]."|br /|"; 
 
echo "Версия HTTP-протокола - ".$_SERVER[&#039;SERVER_PROTOCOL&#039;]."|br /|"; 
?>




Элемент $_SERVER['REQUEST_METHOD']
В элемент $_SERVER['REQUEST_METHOD'] помещается метод запроса, который применяется для вызова скрипта: GET или POST.

Элемент $_SERVER['QUERY_STRING']

В элемент $_SERVER['QUERY_STRING'] заносятся параметры, переданные скрипту, если строка запроса представляет собой адрес:

http://site.ru/index.php?id=1&var1=2&var2=2


то в элемент $_SERVER['QUERY_STRING'] попадёт весь текст после знака "?":

<?php 
 
echo $_SERVER[&#039;QUERY_STRING&#039;]; // id=1&var1=2&var2=2 
?>




Элемент $_SERVER['PHP_SELF']

В элемент $_SERVER['PHP_SELF'] помещается имя скрипта, начиная от корневой директории виртуального хоста, т.е. если строка запроса представляет собой адрес:

http://site.ru/index.php?id=1&var1=2&var2=2


то элемент $_SERVER['PHP_SELF'] будет содержать фрагмент "/index.php". Как правило, этот же фрагмент помещается в элемент $_SERVER['SCRIPT_NAME'].

Элемент $_SERVER['REQUEST_URI']
В элемент $_SERVER['REQUEST_URI'] содержит имя скрипта, начиная от корневой директории виртуального хоста и параметры, т.е. если строка запроса представляет собой адрес:

http://site.ru/index.php?id=1&var1=2&var2=2


то элемент $_SERVER['REQUEST_URI'] будет содержать фрагмент "/index.php?id=1&var1=2&var2=2".
Для того, чтобы восстановить в скрипте полный адрес, который помещён в строке запроса, достаточно использовать комбинацию элементов массива $_SERVER, представленную ниже
Полный адрес к скрипту:

<?php 
 
echo "http://".$_SERVER[&#039;SERVER_NAME&#039;].$_SERVER[&#039;REQUEST_URI&#039;]; 
?>




Просмотреть полный список элементов массива $_SERVER можно либо при помощи функции print_r(); или var_dump();
Комментарии
Введите заголовок:

Введите адрес ссылки:

Введите адрес видео с YouTube:

Зарегистрируйтесь или войдите с
Автор статьи
Информация
5 октября 2015 г. 21:21:15
Просмотров: 4 K
Яндекс.Метрика