Учебное пособие по CGI-программированию Страница 2. Переменные среды CGI
|
Страница 2 из 30 Переменные среды CGI Предыдущий скрипт не содержал ничего особенно замечательного,так просто вываливал HTMLый текст который благополучно и отбражался на екране браузера.Но По настоящему мощь придает CGI возможность обработки параметров,которые переданы скрипту.например вы можете набрать https://www.somehost.ru/somedir/cgi-bin/my_cgi.cgi?param=value то есть вы хотите чтоб скрипт my_cgi.cgi обработал для вас параметер param со значением value (ну это например) или когда вы заполнили запрос в форме (в например yahoo или altavista).Ну это с точки зрения пользователя... А на сервере при запуске CGI-скрипта сервер формирует среду окружения в которой скрипт может найти всю доступную информацию о HTTP-соединении и о запросе. Вот эти переменные:
REQUEST_METHOD Это одно из самых главных поле используемое для определения метода запроса HTTP Протокол HTTP использует методы GET и POST для запроса к серверу.Они отличаются тем что при методе GET запрос является как-бы частью URL т.е. https://www..../myscript.cgi?request а при методе POST данные передаются в теле HTTP-запроса (при GET тело запроса пусто) и следовательно для CGI тоже есть различие при GET запрос идет в переменную QUERY_STRING а при POST подается на STDIN скрипта. Пример:REQUEST_METHOD=GET QUERY_STRING Это строка запроса при методе GET. Вам всем известно что запрос из формы кодируется браузером поскольку не все символы разрешены в URL некоторые имеют специальное назначение. Теперь о методе urlencode: неплохо бы чисто формально напомнить,что все пробелы заменяются в URL на знак '+', а все специальные и непечатные символы на последовательность %hh ,где hh-шестнадцатиричный код символа,разделитель полей формы знак '&',так что при обработке форм надо произвести декодирование. Пример:QUERY_STRING= name=quake+doomer&age=20&hobby=games CONTENT_LENGTH Длина в байтах тела запроса.При методе запроса POST необходимо считать со стандартного входа STDIN CONTENT_LENGTH байт,а потом производить их обработку.Обычно методом POST пользуются для передачи форм,содержащих потенциально большие области ввода текста TEXTAREA.При этом методе нет никаких ограничений,а при методе GET существуют ограничения на длину URL . Пример:CONTENT_LENGTH=31 CONTENT_TYPE Тип тела запроса(для форм кодированых выше указаным образом он application/x-www-form-urlencoded) GATEWAY_INTERFACE Версия протокола CGI. Пример:GATEWAY_INTERFACE=CGI/1.1 REMOTE_ADDR IP-Адрес удаленого хоста,делающего данный запрос. Пример:REMOTE_ADDR=139.142.24.157 REMOTE_HOST Если запрашивающий хост имеет доменное имя,то эта переменная содержит его, в противном случае -тот же самый IP-адресс что и REMOTE_ADDR Пример:REMOTE_HOST=idsoftware.com SCRIPT_NAME Имя скрипта,исполизованое в запросе.Для получения реального пути на сервере используйте SCRIPT_FILENAME Пример:SCRIPT_NAME=/~paaa/guestbook.cgi SCRIPT_FILENAME Имя файла скрипта на сервере. Пример:SCRIPT_FILENAME=/home/p/paaa/public_html/cgi-bin/guestbook.cgi SERVER_NAME Имя серера ,чаще всего доменное как www.microsoft.com ,но в редких случаях за неимением такового может быть IP-адресом как 157.151.74.254 Пример:SERVER_NAME=www.uic.nnov.ru SERVER_PORT TCP-Порт сервера используюшийся для соединения .По умолчаниию HTTP-порт 80, хотя может быть в некоторых случаях другим. Пример:SERVER_PORT=80 SERVER_PROTOCOL Версия протокола сервера. Пример:SERVER_PROTOCOL=HTTP/1.1 SERVER_SOFTWARE Програмное обеспечение сервера. Пример:Apache/1.0 AUTH_TYPE, REMOTE_USER Эти переменные определены в том случае,когда запрошеный ресурс требует аутентификации пользователя. |