Замечание
Просмотреть полный список элементов массива $_SERVER
можно либо при помощи функции print_r(), которая распечатывает дамп
массива либо при помощи функции phpinfo(), которая выводит информацию о
PHP-интерпретаторе.
Элемент $_SERVER['DOCUMENT_ROOT']
Элемент $_SERVER['DOCUMENT_ROOT'] содержит путь к
корневой директории сервера, если скрипт выполняется в виртуальном хосте,
в данном элементе указывается путь к корневой директории виртуального
хоста. Т.е. в конфигурационном файле httpd.conf виртуальный хост имеет
директиву DocumentRoot, которой присвоено значение "D:/main", элемент
$_SERVER['DOCUMENT_ROOT'] будет содержать значение "D:main".
Элемент $_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, для которого
коэффициент предпочтения не указан и принимает значение по умолчанию
равное единице. Цитируя RFС2616 данный заголовок можно интерпретировать следующим образом: "Я предпочитаю
тип audio/basic, но мне можно также слать документы любого другого
audio-типа, если они будут доступны, после снижения коэффициента
предпочтения более чем на 80 %”.
Пример может быть более сложным.
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']. В параметре приводится лишь доменное имя без
названия протокола (http://), т.е.
www.sofftime.ru
Элемент $_SERVER['HTTP_REFERER']
В элементе $_SERVER['HTTP_REFERER'] приводится адрес
страницы, с которой посетитель пришёл на данную страницу. Переход должен
осуществляться по ссылке. Создадим две страницы index.php и
page.php.
Страница index.php
<?php
echo "<a href=page.php>Ссылка на страницу
PHP</a><br />";
echo "Содержимое
$_SERVER['HTTP_REFERER'] - ".
$_SERVER['HTTP_REFERER']
?>
Страница page.php будет аналогичного содержания, но
ссылка будет указывать на страницу index.php.
Страница page.php
<?php
echo "<a href=index.php>Ссылка на страницу
PHP</a><br />";
echo "Содержимое
$_SERVER['HTTP_REFERER'] - ".
$_SERVER['HTTP_REFERER']
?>
При переходе с одной страницы на другую, под ссылкой
будет выводится адрес страницы, с которой был осуществлён переход.
Элемент $_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.
Замечание
Для Windows 2000 элемент $_SERVER['HTTP_USER_AGENT']
выглядит следующим образом: "Mozilla/4.0 (compatible; MSIE 5.01; Windows
NT 5.0)')", в то время как для Windows XP — "Mozilla/4.0 (compatible; MSIE
6.0; Windows NT 5.1)".
Если посетитель воспользуется браузером Opera, то
содержание $_SERVER['HTTP_USER_AGENT']может выглядеть следующим образом:
"Mozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.04 [ru]".
Подстрока "MSIE 6.0" здесь так же присутствует, сообщая, что браузер Opera
является совместимым с браузером Internet Explorer и использует те же
динамические библиотеки Windows. Поэтому, при анализе строки, возвращаемой
браузером, следует иметь в виду, что к Internet Explorer относится строка,
содержащая подстроку "MSIE 6.0" и не содержащая подстроки "Opera". Кроме
того, из данной строки можно заключить, что пользователь использует
операционную систему Windows 98.
Замечание
Пользовательский агент браузера Firefox может выглядеть
следующим образом Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8)
Gecko/20051111 Firefox/1.5.
При использовании браузера Netscape, содержание элемент
$_SERVER['HTTP_USER_AGENT'] может выглядеть следующим образом:
"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624
Netscape/7.1". Принадлежность к этому браузеру можно определить по наличию
подстроки "Netscape". Кроме того, можно узнать, что посетитель выходит в
Интернет, используя операционную версию Linux, с ядром, оптимизированным
под Pentium IV, находясь в графической оболочке X-Window. Этот механизм
удобно использовать для сбора статистической информации, которая позволяет
дизайнерам оптимизировать страницы под наиболее распространенные
браузеры.
Элемент $_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:main estindex.php", т.е. путь указывается от диска, в
UNIX-подобной операционной системы путь указывается от корневой директории
/, например "/var/share/www/test/index.php".
Элемент $_SERVER['SERVER_NAME']
В элемент $_SERVER['SERVER_NAME'] помещается имя сервера,
как правило, совпадающее с доменным именем сайта, расположенного на нём.
Например,
www.softtime.ru
Содержимое элемента $_SERVER['SERVER_NAME'] часто
совпадает с содержимым элемента $_SERVER['HTTP_HOST']. Помимо имени
сервера суперглобальный массив $_SERVER позволяет выяснить ещё ряд
параметров сервера, например IP-адрес сервера, прослушиваемый порт, какой
Web-сервер установлен и версию HTTP протокола. Эта информация помещается в
элементы $_SERVER['SERVER_ADDR'], $_SERVER['SERVER_PORT'],
$_SERVER['SERVER_SOFTWARE'] и $_SERVER['SERVER_PROTOCOL'], соответственно.
Ниже приводится пример с использованием данных элементов.
Использование элементов массива $_SERVER
<?php
echo "Имя сервера - ".$_SERVER['SERVER_NAME']."<br />";
echo "IP-адрес сервера -
".$_SERVER['SERVER_ADDR']."<br />";
echo "Порт сервера -
".$_SERVER['SERVER_PORT']."<br />";
echo "Web-сервер -
".$_SERVER['SERVER_SOFTWARE']."<br />";
echo "Версия HTTP-протокола -
".$_SERVER['SERVER_PROTOCOL']."<br />";
?>
Элемент $_SERVER['REQUEST_METHOD'
В элемент $_SERVER['REQUEST_METHOD'] помещается метод
запроса, который применяется для вызова скрипта: GET или POST.
<?php
echo $_SERVER['REQUEST_METHOD']; // GET
?>
Элемент $_SERVER['QUERY_STRING']
В элемент $_SERVER['QUERY_STRING'] заносятся параметры,
переданные скрипту, если строка запроса представляет собой адрес
http://www.mysite.ru/test/index.php?id=1&test=wet&id_theme=512
то в элемент $_SERVER['QUERY_STRING'] попадёт весь текст
после знака "?". Например, при обращении к скрипту, представленному ниже,
помещая в строке запроса произвольный текст после знака "?" получим
страницу с введённым текстом.
<?php
echo $_SERVER['QUERY_STRING']; // id=1&test=wet&id_theme=512
?>
Элемент $_SERVER['PHP_SELF']
В элемент $_SERVER['PHP_SELF'] помещается имя скрипта,
начиная от корневой директории виртуального хоста, т.е. если строка
запроса представляет собой адрес
http://www.mysite.ru/test/index.php?id=1&test=wet&id_theme=512
то элемент $_SERVER['PHP_SELF'] будет содержать фрагмент
"/test/index.php". Как правило, этот же фрагмент помещается в элемент
$_SERVER['SCRIPT_NAME'].
Элемент $_SERVER['REQUEST_URI']
В элемент $_SERVER['REQUEST_URI'] содержит имя скрипта,
начиная от корневой директории виртуального хоста и параметры, т.е. если
строка запроса представляет собой адрес:
http://www.mysite.ru/test/index.php?id=1&test=wet&id_theme=512
то элемент $_SERVER['REQUEST_URI'] будет содержать
фрагмент "/test/index.php?id=1&test=wet&id_theme=512". Для того,
чтобы восстановить в скрипте полный адрес, который помещён в строке
запроса, достаточно использовать комбинацию элементов массива $_SERVER,
представленную ниже
Полный адрес к скрипту
<?php
echo "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
?>
|