1 Переменные окружения CGI DOCUMENT_ROOT Корневой каталог документов веб-сервера. Например, если при запросе http://www.my-webserver.ru/ сервер пересылает посетителю файл d:/www/index.html, значением переменной DOCUMENT_ROOT будет d:/www. Это обычно совпадает с тем, что указано в директиве DocumentRoot конфигурационного файла сервера Apache. CONTENT_LENGTH Длина тела запроса. Обычно это поле анализируют, если получен запрос типа POST. CONTENT_TYPE Тип принятых данных. Например, multipart/formdata. GATEWAY_INTERFACE Имя и версия CGI-протокола. Например: CGI/1.1. Эта переменная может оказаться полезной, чтобы определить, откуда запущена программа. Если значение переменной отсутствует, то программа, скорее всего, вызвана не через веб, а запущена из командной строки на сервере. HTTP_ACCEPT Список mime-типов, которые способен принять браузер. Переменная может содержать только маску */*, либо список значений, разделенных запятыми: text/html, image/png, image/jpeg, image/gif, image/x-xbitmap, application/msword. HTTP_ACCEPT_CHARSET Список воспринимаемых браузером кодировок. Например, windows-1251;q=1.0, utf-8;q=1.0, utf16;q=1.0, iso-8859-1;q=0.6, *;q=0.1. Обратите внимание, что после каждой кодировки указан ее «вес», который расставляет кодировки в порядке предпочтения. HTTP_ACCEPT_ENCODING Список типов кодирования, которые понимает браузер. Например: gzip, deflate, x-gzip. HTTP_ACCEPT_LANGUAGE Список языков, которые принимает браузер. Например: ru, en. HTTP_CACHE_CONTROL Способ кэширования документов (или указание о его отсутствии). Например: no-cache. В ранних версиях Netscape Navigator это значение доступно в переменной HTTP_PRAGMA. HTTP_CONNECTION Тип соединения. Например: Keep-Alive. HTTP_COOKIE Список пар вида имя=значение, содержащихся в cookiе для текущей страницы или сервера. Значения cookie устанавливает веб-сервер, а браузер клиента сохраняет их и передает 2 серверу при следующих запросах, ведущих на тот же сервер. HTTP_HOST Запрошенное доменное имя. Часто бывает так, что один и тот же сервер доступен по нескольким адресам, например, http://www.my-web-server.ru и http://my-web-server.ru. Переменная примет значения www.my-web-server.ru и my-webserver.ru, соответственно. Переменную можно использовать, чтобы автоматически перенаправлять браузер на другой адрес, например, если вы приобрели новое, более красивое, доменное имя. HTTP_REFERER Адрес страницы, с которой пользователь попал на сервер. Например, если на странице http://www.web-server-1.ru/index.html стоит ссылка на ресурс http://www.web-server2.ru/index.html, то второй веб-сервер получит в этой переменной значение http://www.webserver-1.ru/index.html. С помощью переменной HTTP_REFERER можно узнать, кто ссылается на ваш сервер. Более того, если посетитель пришел с поисковой системы, часто в переменной виден тот запрос, по которому вас нашли. HTTP_USER_AGENT Идентификатор клиентской программы (браузера) и операционной системы. Значение этой переменной не стандартизировано и формируется браузером так, что в ней содержится имя и версия браузера одновременно с версией операционной системы. Например, Microsoft Internet Explorer 6.0 под управлением Windоws XP передает такую строку: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705). QUERY_STRING Строка запроса. Если пользователь запросил документ и указал дополнительные параметры, например, http://www.my-webserver.ru/index.html?var1=name1, переменная получит значение var1=name. Эта переменная активно применяется при обработке веб-форм. REDIRECT_QUERY_STRING Эта и две следующие переменные появляются в том случае, если при запросе некоего ресурса веб-сервер выполнил внутреннее перенаправление, например, на скрипт, который указан в качестве индексного файла для текущего каталога, либо при вызове CGI-программы директивой SSI. В переменной REDIRECT_QUERY_STING содержатся те же данные, что и в переменной QUERY_STRING. 3 REDIRECT_STATUS При перенаправлении в этой переменной указан код ответа, например, 200. REDIRECT_URL Если на сервере выполнено перенаправление, эта переменная содержит запрошенный URI. REMOTE_ADDR IP-адрес пользователя. В том случае, если между пользователем и веб-сервером находится проксисервер, переменная скорее всего будет содержать адрес прокси-сервера. REMOTE_HOST Имя узла пользователя или его прокси-сервера. Если эта переменная не установлена, можно воспользоваться значением переменной REMOTE_ADDR. REMOTE_PORT Номер порта клиента. Если на машине клиента одновременно работают несколько браузеров, значение этой переменной окажется различной для каждого из них. Интересно отметить, что, например, устаревший ныне браузер Netscape Navigator 2 увеличивает номер порта при каждом обновлении страницы. REQUEST_METHOD Текущий метод HTTP-запроса. Например: GET или HEAD. REQUEST_URI URI запрошенного документа. Понятие URI часто путают с URL. Если запрошена страница http://www.my-web-server.ru/dir/index.html, переменная примет значение /dir/index.html. Если в запросе содержится строка запроса (помещаемая в переменную QUERY_STRING), она останется и в переменной REQUEST_URI. SCRIPT_FILENAME Путь к скрипту на веб-сервере. Переменная устанавливается, если пользователь запросил CGI-скрипт или программу, а не html-документ. Например: d:/www/cgi/2/c2.exe. SCRIPT_NAME URI скрипта, если запрошен CGI-скрипт или программа, а не html-документ. В отличие от переменной REQUEST_URI, строка запроса теряется. SERVER_ADDR IP-адрес веб-сервера. SERVER_ADMIN Адрес электронной почты администратора сервера. Значение переменной зависит от того, что указано в файле конфигурации. SERVER_NAME Имя сервера. Оно может не совпадать с доменным именем. Значение этой переменной указано в конфигурационном файле. SERVER_PORT Номер порта веб-сервера, по которому он ожидает запросы. Наиболее вероятное 4 значение — 80. SERVER_PROTOCOL Имя и версия протокола, согласно которому вебсервер общается с клиентом. Например: HTTP/1.1. SERVER_SOFTWARE Название и версия веб-сервера. Здесь также может содержаться упоминание об операционной системе. Например: Apache/1.3.14 (Win32). Дополнительные переменные окружения CGI-скриптов Для удобства написания нетривиальных CGI-скриптов, сервер добавляет несколько дополнительных переменных окружения, доступных как для CGI, так и для модулей. CHARSET в этой переменной содержится "официальное" название кодировки клиента т.е. той, в которой документ будет отдан после перекодировки. SOURCE_CHARSET Кодировка исходного документа (по мнению сервера). Для CGI-скриптов это означает, что их вывод должен быть в этом charset. CHARSET_SERVER_NAME Имя сервера и номер порта в формате www.domain:1234 Эту переменную пришлось добавить т.к. в переменной HTTP_HOST содержится то, что сервер получил в заголовке Host:, а в переменной SERVER_PORT - номер порта, сконфигурированный директивой Port. Что никак не может устроить. CHARSET_SERVER_PORT Номер порта к которому был текущий запрос CHARSET_HTTP_METHOD http:// или https://. Т.е. полный URL запроса восстанавливается как ${CHARSET_HTTP_METHOD}${CHARSET_SERVER_NAME}${REQUEST_URI} CHARSET_SAVED_QUERY_STRING значение переменной QUERY_STRING до перекодировки CHARSET_SAVED_PATH_INFO значение переменной PATH_INFO до перекодировки Переменные CHARSET и SOURCE_CHARSET ставятся сервером только если mod_charset "включен" (CharsetDisable Off), остальные три переменные ставятся всегда.