Когда сервер выполняет скрипт, для него создаются некоторые переменные
окружения, среди которых как локальные данные (адрес скрипта на сервере, версия
П/О сервера), так и данные полученные с HTTP запросом (версия браузера, IP
удаленной машины и т.д.) Знать эти данные для CGI программиста просто
жизненно важно. Вот эти переменные:
$ENV{'REQUEST_METHOD'}
Это одно из самых главных поле используемое для определения метода запроса
HTTP. Протокол HTTP использует методы GET и POST для запроса к серверу. Они
отличаются тем что при методе GET запрос является как бы частью URL т.е.
http://..../cgi-bin/myscript.cgi?param=value а при методе POST данные передаются
в теле HTTP-запроса (при GET тело запроса пусто). Для нас пока интересен
только метод GET.
$ENV{'QUERY_STRING'}
Это строка запроса при методе GET.
$ENV{'CONTENT_TYPE'}
Тип тела запроса.
$ENV{'REMOTE_ADDR'}
IP-Адрес удаленного Хоста, делающего данный запрос.
$ENV{'REMOTE_HOST'}
Если запрашивающий Хост имеет доменное имя, то эта переменная содержит его,
в противном случае -тот же самый IP-адресс что и REMOTE_ADDR.
$ENV{'SCRIPT_NAME'}
Содержит URL адрес файла скрипта.
$ENV{'SCRIPT_FILENAME'}
Полный путь к скрипту на сервере.
$ENV{'SERVER_NAME'}
Имя серера ,чаще всего доменное как www.microsoft.com ,но в редких случаях
за неимением такового может быть IP-адресом.
$ENV{'SERVER_PORT'}
TCP-Порт сервера использующийся для соединения .По умолчанию HTTP-порт 80,
хотя может быть в некоторых случаях другим.
$ENV{'SERVER_SOFTWARE'}
Программное обеспечение сервера.
$ENV{'AUTH_TYPE'} $ENV{'REMOTE_USER'}
Эти переменные определены в том случае, когда запрошенный ресурс требует
аутентификации пользователя.
$ENV{'HTTP_ACCEPT'}
Давая запрос на сервер браузер обычно рассчитывает получить информацию
определенного формата, и для этого он в заголовке запроса указывает поле
Accept:, Отсюда скрипту поступает список тех MIME, которые браузер готов принять
в качестве ответа от сервера.
$ENV{'HTTP_USER_AGENT'}
Браузер обычно посылает на сервер и информацию о себе, чтоб базируясь на
знании особенностей и недостатков конкретных браузеров CGI-скрипт мог выдать
информацию с учетом этого. Например, разные браузеры могут поддерживать или не
поддерживать какие-то HTML тэги.
$ENV{'CONTENT_LENGTH'}
Длина в байтах тела запроса.
$ENV{'GATEWAY_INTERFACE'}
Версия протокола CGI.
$ENV{'SERVER_PROTOCOL'}
Версия HTTP протокола сервера.
Получение
данных методом GET Суть метода GET заключается в передаче некоторого
объема информации вместе с URL скрипта. Для отделения URL от передаваемой
информации используют знак "?" (вопросительный знак). Неплохо бы чисто формально
напомнить, что все пробелы заменяются в URL на знак '+', а все специальные и
непечатные символы на последовательность %hh ,где hh-шестнадцатиричный код
символа. Методом GET можно одновременно передавать несколько значений. Как это
делается я расскажу вам позже, а пока будем довольствоваться одним передаваемым
значением.
Напишем программу, которая выводит квадрат числа, если
передаем ей число, или строку, если передаем текстовую строку. Передавать данные
следует примерно так:
Попробуйте написать программу, выводящую
таблицу Пифагора с максимальным значением по оси X и Y, передаваемым методом
GET. Сделайте так, чтобы ячейки закрашивались в шахматном порядке, а оси
имели черный цвет.
Напишите программу, которая выводит символьную
строку, переданную скрипту только в том случае, если IP удаленной машины не
соответствует 127.0.0.1 .