При отправке запроса от браузера, на веб-сервер также пересылается техническая информация об определенных параметрах браузера и операционной системы. Веб-сервер в свою очередь одновременно с запрашиваемой информацией возвращает и некоторые свои параметры. Таким образом, браузер и веб-сервер обмениваются данными, которые называются переменные окружения. Эти переменные можно применять в своих целях и отображать их на веб-странице. При использовании SSI общий синтаксис вывода определенной переменной окружения будет следующий.
<!--#echo var="переменная"-->
Некоторые переменные с их описанием перечислены в табл. 3.1. Заметьте, что все имена пишутся заглавными символами. Хотя это условие и необязательно, именно такая форма записи является традиционной и устоявшейся.
Табл. 3.1. Список переменных окружения Переменная Описание
DOCUMENT_ROOT Путь к корневой папке сайта. Для локального веб-сервера значение может принимать вид z:/home/htmlbook.ru/www, а в других случаях зависит от операционной системы сервера и используемого программного обеспечения. Например, значение может быть следующим:
/home/www/htmlbook.ru/htdocs.
GATEWAY_INTERFACE Версия CGI (Common Gateway Interface, общий шлюзовый интерфейс). Значение обычно равно CGI/1.1.
HTTP_ACCEPT Типы файлов, которые способен принять браузер. В качестве значения возвращается список поддерживаемых MIME-типов разделенных запятыми, например: text/xml, application/xml, text/html.
HTTP_CONNECTION Тип соединения браузера с веб-сервером. Так, значение keep-alive означает, что браузер поддерживает постоянное соединение с сервером. При этом в течение одного сеанса соединения разрешено делать несколько запросов. Повторного соединения в таком случае уже не происходит.
HTTP_HOST Доменное имя сайта. Обычно различают имена с префиксом www (www.htmlbook.ru) и без него (htmlbook.ru). Переменная вернет тот адрес сайта, который указан в адресной строке браузера.
HTTP_REFERER Адрес страницы, с которой пользователь перешел на данный сайт, он еще называется реферер.
HTTP_USER_AGENT Идентификатор используемого браузера и операционной системы. В качестве значения возвращается строка, содержащая ключевые слова. Например, следующая строка
Mozilla/5.0 (Windows; U; Windows NT 5.0; ru-RU; rv:1.7.8) Gecko/20050511 Firefox/1.0.4
говорит, что пользователь использует браузер Firefox 1.0.4 под операционной системой Windows 2000 (внутреннее название - Windows NT 5.0).
QUERY_STRING Запрос, который указан в адресной строке после вопросительного знака (?). Обычно пишется в форме «переменная=значение», где переменные разделяются между собой амперсандом (&). Так, при написании адреса http://www.htmlbook.ru/?id=5&slv=34 будет возвращено значение id=5&slv=34.
REMOTE_ADDR IP-адрес посетителя сайта.
REQUEST_METHOD Метод получения данных. По умолчанию применяется метод GET.
REQUEST_URI Адрес запрашиваемого документа. Отсчет ведется от корня сайта, т.е. для полного адреса http://www.htmlbook.ru/1.html вернется значение 1.html.
SERVER_ADDR IP-адрес компьютера, на котором размещается сайт.
SERVER_ADMIN Адрес электронной почты администратора сайта.
SERVER_NAME Имя сервера.
SERVER_PORT Порт, по которому ожидается получение данных на сервер.
SERVER_PROTOCOL Протокол для получения и отправки данных. Значение обычно равно HTTP/1.1.
SERVER_SOFTWARE Программное обеспечение установленное на сервере. Для веб-сервера Apache возвращается номер версии (Apache/1.3.27), а также версия PHP (PHP/4.3.6).
В примере 3.1 показано использование переменных окружения для отображения на веб-странице требуемой информации.
Пример 3.1. Вывод значения переменной DOCUMENT_ROOT
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>SSI</title>
</head>
<body>
<p>Путь к корневой папке сайта: <!--#echo var="DOCUMENT_ROOT"--></p>
</body>
</html>
В результате выполнения примера будет выведена следующая строка.
Путь к корневой папке сайта: /home/htmlbook.ru/www
Значения переменных окружения можно посмотреть с помощью программы, написанной на языке программирования Perl (пример 3.2).
Пример 3.2. Вывод переменных окружения
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<html>\n<body>\n";
print "<table border=0 cellspacing=10 width=100%>\n";
print "<tr><td align=right valign=top>$a</td><td>$b</td></tr>\n" while ($a,$b) = each %ENV;
print "</table>\n";
print "</body>\n</html>\n";
В цикле while программа «пробегается» по хэшу %ENV и передает ключ и значение переменным $a и $b, которые выводятся в ячейках таблицы.