18c0693f

Переменные среды для программы CGI


Прежде чем перейти к примерам программ CGI, мы изучим переменные среды, которые формируются для этих программ перед запуском. Через эти переменные помимо данных из полей форм передается и другая очень важная информация, которую не всегда следует игнорировать.

Изучение переменных среды мы начнем с того, что просмотрим их значение с помощью простейшей программы CGI, созданной с использованием языка пакетных заданий операционной системы Microsoft Windows NT, а проще говоря, с помощью обыкновенного файла с расширением имени bat.

Для запуска этой “программы” мы подготовили форму, исходный текст которой представлен в листинге 7.2.

Листинг 7.2. Файл chap7\viewenv\viewenv.htm

<HTML>

<HEAD>

 <TITLE>Просмотр переменных среды</TITLE>

</HEAD>

<BODY BGCOLOR=#FFFFFF>

<H1>Просмотр переменных среды</H1>

<P>Для просмотра переменных среды, передаваемых программе

CGI, нажмите кнопку &quot;View&quot;

<FORM METHOD=GET ACTION="http://saturn/frolov-cgi/test.bat?param1">

<INPUT TYPE=SUBMIT VALUE="View">

</FORM>

</BODY>

</HTML>

Форма выглядит так, как это показано на рис. 7.3.

Рис. 7.3. Форма для запуска программы CGI просмотра значений переменных среды

Обратите внимание, что после имени программы CGI через разделительный символ “?” указана строка параметров param1, которая может быть получена и проанализирована программой CGI.

Исходный текст программы CGI приведен в листинге  7.3.

Листинг 7.3. Файл chap7\viewenv\test.bat

echo Content-type: text/plain

echo

echo %0 %1 %2 %3

set

В первой строке программа выводит в стандартный поток вывода STDOUT строку заголовка HTTP. Эта строка описывает тип передаваемых данных как text/plain, то есть обычный текст без оформления с использованием операторов HTML.

Вторая строка выводит в стандартный поток вывода пустую строку, которая отделяет заголовок HTTP от передаваемых данных.

Третья строка выводит путь к загрузочному файлу программы CGI и параметры, полученные ей при запуске.


И, наконец, в последней строке вызывается команда SET, которая выводит в поток STDOUT значения всех переменных среды, определенных в системе перед запуском программы.

Результат работы нашей программы CGI показан на рис. 7.4.



Рис. 7.4. Результат работы программы CGI, отображающей значения переменных среды

Ниже мы привели полный листинг, полученный при работе нашей программы CGI:

g:\iisdir\wwwroot\guest>echo

ECHO is on.

g:\iisdir\wwwroot\guest>echo g:\iisdir\wwwroot\guest\test.bat param1?  

g:\iisdir\wwwroot\guest\test.bat param1? 

g:\iisdir\wwwroot\guest>set

AUTH_TYPE=

ComSpec=D:\WINNT35\system32\cmd.exe

GATEWAY_INTERFACE=CGI/1.1

HTTP_ACCEPT=image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*

HTTP_REFERER=file:C:\!websrv\Sample\Chap7\viewenv\viewenv.HTM

HTTP_ACCEPT_LANGUAGE=, en

HTTP_UA_PIXELS=1024x768

HTTP_UA_COLOR=color16

HTTP_UA_OS=Windows 95

HTTP_UA_CPU=x86

HTTP_USER_AGENT=Mozilla/2.0 (compatible; MSIE 3.0; Windows 95)

HTTP_HOST=frolov

HTTP_CONNECTION=Keep-Alive

CONTENT_LENGTH=0

CONTENT_TYPE=

PATH=D:\WINNT35\system32;D:\WINNT35;

PATH_INFO=/frolov-cgi/test.bat

PATH_TRANSLATED=g:\iisdir\wwwroot\guest\test.bat

PROMPT=$P$G

QUERY_STRING=param1?

REMOTE_ADDR=154.101.200.255

REMOTE_HOST=154.101.200.255

REMOTE_USER=

REQUEST_METHOD=GET

SCRIPT_NAME=/frolov-cgi/test.bat

SERVER_NAME=154.100.100.10

SERVER_PROTOCOL=HTTP/1.0

SERVER_PORT=80

SERVER_SOFTWARE=Microsoft-Internet-Information-Server/1.0

SystemRoot=D:\WINNT35

windir=D:\WINNT35

В этом листинге отображаются переменные среды, определенные специально для программы CGI сервером Microsoft Internet Information Server, а также переменные среды, стандартные для операционной системы Microsoft Windows NT.

Рассмотрим по отдельности назначение переменных среды. Заметим, что набор переменных, создаваемых при запуске программы CGI, зависит от конкретной реализации сервера WWW.