10513

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

Домашняя работа

Информатика, кибернетика и программирование

Суперглобальный массив SERVER Одним из важнейших предопределенных массивов является массив SERVER в него PHPинтерпретатор помещает переменные полученные от сервера. Без данных переменных сложно организовать полноценную поддержку Webприложений. Ниже приводится описан...

Русский

2013-03-27

54 KB

1 чел.

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

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

Замечание

Просмотреть полный список элементов массива $_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'];

?>


 

А также другие работы, которые могут Вас заинтересовать

41723. Создание и редактирование таблиц, построение диаграмм 601.37 KB
  Рассмотрим некоторые особенности ввода текста в ячейки рабочего листа. Текст "Наименование", который вводится в ячейку А1, целиком в этой ячейке не помещается и занимает еще и ячейку В1 (рис. 2.3). Поскольку в ячейку В1 не было введено никакой информации, текст виден полностью. При вводе в ячейку В1 текста "Стоимость", текст в А1 будет виден частично, в пределах границ столбца А.Среднее количество проданного товара каждого наименования за текущий год. Общее количество проданных товаров за каждый месяц. Минимальное и максимальное количество товаров за полугодие количество максимальных продаж. Вклад в продажи сахара в общее количество проданного товара за...
41724. Частотные характеристики типовых звеньев систем автоматического управления 1.47 MB
  Построение частных характеристик типовых звеньев средствами математического пакета MATLAB и изучение зависимости этих характеристик от параметров входящих в состав передаточной функции.Построить следующие частотные характеристики: ЛАЧХ; ФЧХ; АФЧХ. Увеличив значение T в 10 раз определить как изменятся частотные характеристики. Задание 1 Используя пакет MTLB получим частотные характеристики.
41726. Исследование электрической цепи с последовательным и параллельным соединениями приёмников электрической энергии 349.01 KB
  Проверка на опыте особенностей последовательного и параллельного соединения резисторовэ,и при этом образуется неразветвленная цепь или участок цепи. Для последовательного соединения характерно то что во всех этих резисторах возникает одинаковый ток а падения напряжения на них пропорциональны сопротивлениям: Каждое сопротивление может быть найдено по формулам: Падение напряжения на всем участке цепи равно сумме падений напряжений на каждом резисторе: Эквивалентное сопротивление участка цепи равно сумме сопротивлений каждого резистора: Если же к концам участка вместо трех резисторов подключить эквивалентный...
41727. Органолептическая оценка качества сырья и приготовление полуфабрикатов из мяса и домашней птицы 101.48 KB
  Организация рабочего места используемые технологическое оборудование посуда инвентарь из мясного цеха Органолептическая оценка мяса. Признаки свежести мяса. Полуфабрикаты из мяса приготовление котлетной массы.
41728. Решение оптимизационных задач с помощью надстройки Excel «Поиск решения» 21.87 MB
  Ниже перечислены основные правила которыми следует руководствоваться чтобы создать качественную модель на основе электронных таблиц: необходимо четко обозначить все переменные; следует четко обозначить входы модели переменные решения и параметры; надо указать критерии эффективности и выходные переменные; не следует жестко привязывать значения параметров к формулам параметры должны храниться в отдельных ячейках рабочего листа для удобства документирования и анализа; если это возможно надо отделять переменные представляющие...
41729. Построение графиков функций 88.96 KB
  5x2cosx Создание приложений.5x2cosx end; Функции описывающие переход от вещественных координат к экранным по оси Х function xex:rel:integer; begin xe:=roundxxmin dx10; end; по оси Y function yey:rel:integer; begin ye:=Form1. № вар F1x F2x F3x F4x 1 2 3 4 5 1 cosx 2cosx cos2x Cosx 2 2 sinx 2sinx sin2x sinx 2 3 Expx 2Expx Exp2x Expx 2 4 cosx0.5x 2cosx2x cos2x4x 3xCosx 2 5 6 3xsinx x 3 cosx 3 x3cosx xcosx 3 7 8 9 Expx Expx 2 Expx1 Exp2x 10 Expx2x...
41730. Создание статического и динамического изображения 550.85 KB
  Ход работы Создал канал уровень который пропорционален уровню продукта в емкости рисунок 2.1 а Создал генератор синусоидального сигнала и произвёл его привязку к созданному каналу рисунок 2. а б Рисунок 2.1 Процесс создания канала Уровень и генратора Синусоида Создал экран с расположением на нем тренда строящего зависимость уровня...
41731. Складання програми сортування обєктів 64.74 KB
  Складання програми сортування обєктів Мета роботи: Складання програми сортування обєктів за кольором. Завдання на лабораторну роботу: Скласти програму сортування кольорових обєктів з використанням датчика кольору для визначення кольору обєктів та двох тактильних датчиків для калібрування робота. Програма мусить виконувати наступні функції: Керування сервоприводом для подавання обєктів на виявлення кольору обєкту. Керування механізмом що містить відділення для обєктів сортування за допомогою сервопривода.