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

Суперглобальный массив $_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).

 

Добавить комментарий


Защитный код
Обновить

Вы здесь: Сайтостроение Создание сайта PHP Суперглобальный массив $_SERVER подробно