Суперглобальный массив $_SERVER подробно
- Подробности
- Категория: PHP
- Просмотров: 19973
Суперглобальный массив $_SERVER - это то на чем стоит остановится и изучить, если вы встали на путь программирования. Он вам может показать самую важную информацию.
В массиве $_SERVER хранятся важные переменные, которые помещаются в него php-интерпритатором. Многие сервисы часто используют этот суперглобальный массив для своей работы или предоставляя информацию своим клиентам. Без него сложно осуществить полноценную поддержку web-приложений.
Для начала нужно сказать, что посмотреть все переменные $_SERVER вы можете при помощи функции print_r() через phpinfo();
Пояснение на примерах
1. Многие спрашивают, для чего нужен - $_SERVER['SERVER_SOFTWARE'] - в интернете практически не найти, а лучше смотрите пример:
echo "Web-сервер - ".$_SERVER['SERVER_SOFTWARE'].";
Такой код может выдать такой ответ: Web-сервер - Apache. То есть вы поняли для чего он нужен, едем дальше...
2. $_SERVER['HTTP_USER_AGENT'] - необходим для вывода информации об операционной системе клиента и версии и названии браузера:
echo "Определение версии браузера и операционки клиента - ".$_SERVER['HTTP_USER_AGENT'];
Такой код может выдать такой ответ(только то, что в кавычках): Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0. Собирая данную информацию, можно оптимизировать свой сайт под наиболее востребованные браузеры.
3. $_SERVER['HTTP_HOST'] - показывает имя сервера, которое совпадает с доменом без http и слешей, только имя.
echo $_SERVER['HTTP_HOST'];
Такой код может выдать такой ответ: saitsozdanie.ru - то есть как видим, что http:// опускается
$_SERVER['SERVER_NAME'] - зачастую показывает практически тоже самое;
4. $_SERVER['HTTP_REFERER'] - используется для указания информации "откуда человек пришел" - а, именно, с какой страницы.
echo $_SERVER['HTTP_REFERER'];
Такой код может выдать такой ответ: http://yandex.ru/clck/.... и так далее, если вы перешли на мой сайт к примеру с яндекса из поиска. Очень полезная функция получается для оценки трафика с поисковиков.
5. Использование $_SERVER['HTTP_ACCEPT'] - покажет вам предпочтения клиента относительно типа документа. Указание заголовка Accept позволяет уточнить желаемый медиа-тип.
echo $_SERVER['HTTP_ACCEPT'];
Такой код может выдать такой ответ: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8.
Где q - это относительный коэффициент предпочтения (может принимать значения от 0 до 1, где 1 - означает, что более предпочтителен). Как видим типы отделяются между собой запятыми, а между типом и его коэффициентом ставится точка с запятой - application/xml;q=0.9,*/*;q=0.8 - где / - все типы. А вот там где нет значения q, он по-дефолту равен 1;
6. $_SERVER['HTTP_ACCEPT_LANGUAGE'] - используют для вычисления языкового предпочтения клиента(то есть возможность использования для национальной принадлежности). Извлечение идет из HTTP-заголовка Accept-Language:
echo $_SERVER['HTTP_ACCEPT_LANGUAGE'];
Такой код может выдать такой ответ: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3. Это мои значения, у вас будут другие. Есть зависимость от браузера - англоязычные версии будут показывать в приоритете - English.
7. $_SERVER['DOCUMENT_ROOT'] - применяется для вычисления корневой директории сайта или папки(место, где лежит сайт, основная папка):
echo $_SERVER['HTTP_ACCEPT_LANGUAGE'];
Такой код может показать такое: C:/Users/Sergio/OpenServer/domains/saitsozdanie.ru - если я проверяю свой сайта на локальном компьютере. На хостинге результат, естественно, будет другой, но для примера думаю красноречиво!
8. $_SERVER['REMOTE_ADDR'] - используется для вычисления ip адреса клиента.
echo $_SERVER['REMOTE_ADDR'];
Такой код может показать такое: 127.0.0.1 это на локалке. В интернете же мы получим айпишник клиента. Если к нам на сайте человек зашел через прокси, то пользуем переменную окружения HTTP_X_FORWARDED_FOR (ее значения можно определить с помощью функции getenv() - кроме анонимных прокси, echo @getenv(HTTP_X_FORWARDED_FOR); ).
9. $_SERVER['REQUEST_URI'] - показывает часть адреса или ссылки. К примеру, если у нас есть - http://saitsozdanie.ru/php/superglobalnyj-massiv-server-podrobno.html то элемент $_SERVER['REQUEST_URI'] содержит это "/php/superglobalnyj-massiv-server-podrobno.html".
10. Что еще из полезного мы можем узнать из этого глобального массива:
$_SERVER['SERVER_PORT'] - прослушиваемый порт;
$_SERVER'SERVER_ADDR'] - ip адрес сервера;
$_SERVER['SERVER_PROTOCOL'] - версия протокола;
Нетрудно догадаться и начать конструировать собственные конструкторы, которые, в принципе, уже давно созданы:
echo "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; - и получить полный путь например к скрипту относительно сервера.
11. $_SERVER['QUERY_STRING'] - позволяет получить часть ссылки после знака вопроса, то есть параметры, переданные скрипту.
12. $_SERVER['REQUEST_METHOD'] - примените его и узнаете, какой метод запроса был использован GET или POST.
13. $_SERVER['PHP_SELF'] - для вычисления адреса скрипта относительно сервера. К примеру имеем строку запроса - http://sait.ru/byume/index.php?id=1&title=wet&them=215. Значения переменной $_SERVER['PHP_SELF'] - будет таковым: "/byume/index.php".
Похожее будет и с $_SERVER['SCRIPT_FILENAME'] - этот элемент показывает абсолютный путь до файла(скрипта), только уже относительно сервера(может быть такое /var/www/sait.ru/index.php).