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

« Предыдущая запись
 
  Следующая запись »
 

$_SERVER является одним из важнейших предопределённых массивов в PHP. В нём PHP-интерпретатором размещены переменные, полученные от сервера. Все пользовались этими переменными, или обязательно будут пользоваться, т. к. без них довольно сложно организовать полноценную поддержку веб-приложений.

В своей статье я предлагаю таблицу с основными переменными суперглобального массива $_SERVER. Таблица подобно той, что была сделана для функций PHP для работы со строками.

Чтобы посмотреть все элементы массива $_SERVER, нужно: а) либо вызвать функцию print_r(), которая распечатает массив; б) либо вызвать функцию phpinfo(), которая выведет информацию о PHP-интерпретаторе.

Кратко о $HTTP_SERVER_VARS

Суперглобальный массив $_SERVER пришёл на смену массиву $HTTP_SERVER_VARS в PHP версии 4.1.0. $HTTP_SERVER_VARS сейчас не используется, но знать о нём стоит. Прежде всего, старая версия не являлась автоглобальной. Второе отличие заключается в том, что некоторые элементы массива $_SERVER не существуют в $HTTP_SERVER_VARS, хотя в большинстве случаев их переменные совпадают.

Элемент

Краткое описание

Пример

$_SERVER['DOCUMENT_ROOT']

Содержит путь к корневому каталогу сервера.

C:\folder

/www/folder

$_SERVER['HTTP_HOST']

$_SERVER['SERVER_NAME']

Содержат имя сервера, которое, как правило, совпадает с доменным именем сайта. Обычно оба элемента возвращают одинаковые имена.

www.mass-on.ru

shublog.ru

$_SERVER['SCRIPT_FILENAME']

Содержит имя скрипта, начиная от корневого каталога виртуального хоста.

C:\folder\index.php

/www/folder/index.php

$_SERVER['PHP_SELF']

$_SERVER['SCRIPT_NAME']

Содержит имя скрипта.

/index.php

$_SERVER['REQUEST_URI']

Содержит имя скрипта, начиная от корневого каталога фиртуального хоста, а также переданные ему методом GET параметры.

/www/folder/index.php?page=2&num=5

$_SERVER['QUERY_STRING']

Содержит параметры, переданные скрипту методом GET.

Для адреса

http://site.com/index.php?page=2&num=5

будет выведено

page=2&num=5

$_SERVER['REQUEST_METHOD']

Содержит метод запроса, который применяется для вызова скрипта.

GET или POST

$_SERVER['HTTP_REFERER']

Содержит адрес страницы, с которой пришёл посетитель.

http://yandex.ru/yandsearch

$_SERVER['HTTP_USER_AGENT']

Содержит тип и версию браузера и операционной системы посетителя. Может определять также поисковых роботов и марку сотового телефона. Ниже представлено сопоставление марки телефона и его шифра в строке.

Nokia – NOKIA; Sony Ericsson – ERICSSON или SONYERICSSON; Samsung – SAMSUNG или SEC-; Motorola – MOT; LG – LG или LG-; Alcatel – ALCATEL; Panasonic – PANASONIC; Sagem – SAGEM; Pantech – PANTECH; Siemens – SIE; BenQ – BENQ; NEC – NEC; Sharp – SHARP.

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) (IE 6 и Windows XP)

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.0) Opera 9.50 [ru] (Opera 9.5 и Windows 2000)

$_SERVER['REMOTE_ADDR']

Содержит IP-адрес клиента.

98.240.10.1

$_SERVER['SERVER_ADDR']

Содержит IP-адрес сервера.

127.0.0.1

$_SERVER['HTTP_ACCEPT']

Описывает предпочтения клиента относительно типа документа. Содержимое этого элемента извлекается из HTTP-заголовка Accept, который передаётся серверу клиентом.

Формат вывода: MIME-тип [[; q], другой MIME-тип [; q] ... ]

Предпочитаемых MIME-типов может быть несколько, тогда они перечисляются через запятую. * используется для задания шаблона, группировки. q – коэффициент предпочтения, по умолчанию 1, изменяется от 0 до 1.

image/jpeg, image/x-xbitmap, application/x-shockwave-flash

image/*; q=0.5, image/jpeg (предпочитает жпег всем остальным форматам)

$_SERVER['HTTP_ACCEPT_LANGUAGE']

Подобен предыдущему элементу, но относится уже к языковым предпочтениям. Может быть использован для определения национальной принадлежности посетителей. Но оценка будет приблизительной, т. к. некоторые любят использовать английские версии браузеров

ru, en; q=0.9 (предпочтение русского, но если его нет — и английский сойдёт)

$_SERVER['HTTP_ACCEPT_CHARSET']

Подобен предыдущим. Содержит заголовок Accept-Charset

utf-8

$_SERVER['HTTP_ACCEPT_ENCODING']

Подобен предыдущим. Содержит заголовок Accept-Encoding

gzip, *;q=0

$_SERVER['SERVER_PORT']

Содержит прослушиваемый порт сервера.

80

$_SERVER['SERVER_SOFTWARE']

Содержит информацию о веб-сервере.

Apache/2.2.4 (Win32)

$_SERVER['SERVER_PROTOCOL']

Содержит версию HTTP-протокола.

HTTP/1.1

$_SERVER['GATEWAY_INTERFACE']

Содержит версию CGI, используемую веб-сервером.

CGI/1.1

$_SERVER['REQUEST_TIME']

Время начала запроса веб-страницы в UNIX-формате. Доступна, начиная с PHP 5.1.0

1277291674

Полный адрес страницы с параметрами:

<?php
echo 'http://'.SERVER_NAME.$_SERVER['REQUEST_URI'];
?>

Таблицу со всеми функциями можно скачать по ссылке в формате *.doc.

 

 

 

ВНИМАНИЕ, СОВЕТ!

Будьте особо внимательны к переменной $_SERVER['REQUEST_URI'] и не забывайте её проверять! Дело в том, что её использование может быть не особо безопасным. К примеру, на Вашем сайте некоторые урлы формируются с использованием этого параметра. Тогда можно прописать в строке браузера ссылку http://site.com/index.php?”><script>alert(document.cookie)</script>. В результате будет выведено окно, где будет показано содержимое файла кукисов. Данный пример безобиден, но это является дырой, с помощью которой хакер может воспользоваться брешью, к примеру, чтобы украсть данные другого пользователя. Посему — проверяйте переменную на недопустимые символы, а особенно > и <.

На сегодня, пожалуй, всё. До новых встреч и удачных выходных!

,

1 звезда2 звезд3 звезд4 звезд5 звезд (голосов: 3, средний: 5.00 из 5)
Понравилась статья или журнал? Подписывайся на продолжение!
Отзывов: 4 на запись

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

  1. А просто полученное сообщение в виду переменной пропустить через strip_tags и htmlspecialchars (+trim) уже нельзя?

  2. Можно,а точнее нужно, руки всё не доходят исправить. А стрип_тэгс не нужен, одного хтмлспешал хватит.
    Постараюсь исправить в ближайшее время

  3. Спасибо, отличная статья, давно хотел узнать про этот суперглобальный массив.

  4. Александр Шуйский
    15/09/2014 at 15:23 Постоянная ссылка Цитировать

    Рад быть полезен! =)

Добро пожаловать, коллега! Вы можете оставить свой отзыв:





Допустимые XHTML-теги:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Подписка на комментарии