CGI-сценарии
Переменные среды CGI
В зависимости от метода данные формы передаются в CGI-программу или через стандартный ввод (POST), или через переменную среды QUERY_STRING (GET). Помимо этих данных CGI-программе доступна и другая информация, поступившая от клиента в заголовках запроса или предоставленная Web-сервером. Эта информация сохраняется в переменных среды UNIX. С некоторыми из них мы уже познакомились ранее. В табл. 15.1 перечислены переменные, обычно используемые в CGI.
Таблица 15.1. Переменные среды CGI.
Переменная среды | Описание |
---|---|
GATEWAYJNTERFACE | Версия CGI, которую использует сервер |
SERVER_NAME | Доменное имя или IP-адрес сервера |
SERVER_SOFTWARE | Имя и версия программы-сервера, отвечающей на запрос клиента (например, Apache 1.3) |
SERVER_PROTOCOL | Имя и версия информационного протокола, который был использован для запроса (например, HTTP 1.0) |
SERVER_PORT | Номер порта компьютера, на котором работает сервер (по умолчанию 80) |
REQUEST_METHOD | Метод, использованный для выдачи запроса (GET, POST) |
PATHJNFO | Дополнительная информация о пути |
PATHJRANSLATED | Та же информация, что и в переменной PATHJNFO с префиксом, задающим путь к корневому каталогу дерева Web-документов |
SCRIPT_NAME | Относительное маршрутное имя CGI-сценария (например, /cgi-bin/program.pl) |
DOCUMENT_ROOT | Корневой каталог дерева Web-документов |
QUERY_STRING | Строка запроса– информация, переданная в составе URi запроса после символа "?" |
REMOTE_HOST | Имя удаленной машины, с которой сделан запрос |
REMOTE_ADDR | IP-адрес удаленной машины, с которой сделан запрос |
REMOTE_USER | Идентификационное имя пользователя, посылающего запрос |
CONTENT_TYPE | Медиа-тип данных запроса, например, "text/html". |
CONTENT_LENGTH | Количество байт в теле запроса, переданных в CGI-программу через стандартный ввод |
HTTP_HOST | Хост-имя компьютера, на котором работает сервер |
HTTP_FROM | Адрес электронной почты пользователя, направившего запрос |
HTTP_ACCEPT | Список медиа-типов, которые может принимать клиент |
HTTP_USER_AQENT | Браузер, которым клиент пользуется для выдачи запроса |
HTTP_REFERER | URL документа, на который клиент указывал перед обращением к CGI-программе |
Имена переменных среды CGI на разных Web-серверах могут различаться. Следует обратиться к документации на соответствующий сервер.
CGI-программа на языке Perl имеет доступ к переменным среды через специальный предопределенный хеш-массив %ENV, к элементам которого можно обратиться по ключу, совпадающему с именем переменной среды. Ниже приведены пример CGI-сценария, формирующего HTML-документ с информацией о всех установленных переменных среды, и отображение этого документа в окне браузера.
#!/usr/bin/perl print "Content-type:text/html\n\n"; print "<html>\n"; print "<head><title>Преременные cpeды</titlex/head>\n"; print "<bоdу><h2>Переменные среды</h2>\n"; print "<hrxpre>\n"; foreach $name (sort(keys %ENV)) { print "$name: $ENV($name}\n"; } print "<hrx/pre>\n"; print "</bodyx/html>\n";
Рис. 15.3. Информация о переменных среды CGI