Выбрать главу

Пример файла main.shtmclass="underline"

$ pg main.shtml

<HTML>

<! строка комментария>

<! main.shtml>

</A> Last modified: <!—-#echo var="LAST_MQDIFIED" -—>

</H4>

<HR>

<CENTER>

<H1> THE MAY DAY OPERATIONS CENTER </H1>

<H2> Stand‑by to stand‑to

<HR>

This page has been visited <! —#exec cgi="/cgl‑bin/hitcount.cgi" —> times

<HR>

To see your environment settings just click

<A HREF="/cgi‑bin/printenv.cgi" >here</A>

</CENTER>

<H2>

<HR>

</HTML>

Ниже приведен сценарий printenv.cgi, выводящий на печать значения параметров среды. В сценарии используется команда env. Тег <PRE> применяется для сохранения форматирования (вывода табуляции и пробелов).

$ pg printenv.cgi

#!/bin/sh

# printenv.cgi

# вывод на печать настроек Web–сервера с помощью команды env

echo "Content‑type: text/html"

echo ""

echo "<HTML><PRE>"

env

echo "</PRE></HTML>"

Рис. 29.5. Страница, включающая ссылку для просмотра переменных среды

На рис. 29.5 показано, как выглядит страница с добавленной ссылкой.

После щелчка на ссылке отображаются настройки среды (рис. 29.6). Эти настройки могут слегка отличаться в каждом конкретном случае. При выполнении различных сценариев возможно изменение настроек с целью адаптации к новой среде.

Рис. 29.6. Страница, отображающая значения текущих переменных

29.4.6. Другие общие переменные среды

В табл. 29.2 представлены наиболее часто применяемые переменные среды cgi. Значения некоторых из этих переменных могут быть просмотрены с помощью команды env либо set.

Таблица 29.2. Общие переменные cgi Web–сервера

DOCUMENT ROOT Основной каталог Web–сервера, куда загружаются документы
GATEWAY_INTERFACE Редакция cgi
HTTP_ACCEPT Другие подтвержденные типы MIME
HTTP_CONNECTION Предпочитаемое подключение HTTP
HTTP_HOST Имя локального хост–компьютера
HTTP USER AGENT Клиентский броузер
REMOTE_HOST Удаленный хост–компьютер
REMOTE_ADDR[3] IP–адрес удаленного хост–компьютера
REQUEST_METHOD Метод, используемый для передачи информации
SCRIPT FILENAME Абсолютное имя пути сценария cgi
SCRIPT_NAME Относительное имя пути сценария cgi
SERVER_ADMIN Адрес электронной почты Web–администратора
SERVER_NAME Хост–имя, DNS либо IP–адрес сервера
SERVER_PROTOCOL Протокол, используемый для реализации соединения
SERVER_SOFTWARE Наименование программного обеспечения Web–сервера
QUERY_STRING Передаваемые данные из метода GET
CONTENT_TYPE Тип MIME
CONTENT_LENGTH Количество байтов, передаваемых с помощью метода post

Для отображения значения переменных можно заключить эти переменные в небольшой сценарий cgi, а затем вызывать данный сценарий в случае, если нужно проверить значение переменной.

$ pg evncgi.cgi

#!/bin/sh

#envcgi.cgi

#вывод на печать настроек web–сервера с помощью команды env

echo "Content‑type: text/html"

echo ""

echo "<HTML><PRE>"

echo "CGI Test ENVIRONMENTS"

echo "SERVER_SOFTWARE=$SERVER_SOFTWARE"

echo "SERVER_NAME=$SERVER_NAME"

echo "GATEWAY_INTERFACE=$GATEWAY_INTERFACE"

echo "SERVER_PROTOCOL=$SERVER_PROTOCOL"

echo "SERVER_PORT=$SERVER_PORT"

echo "REQUEST_METHOD=$REQUEST_METHOD"

echo "HTTP_ACCEPT=$HTTP_ACCEPT"

echo "PATH_INFO=$PATH_INFO"

echo "PATH_TRANSLATED=$PATH_TRANSLATED"

echo "QUERY_STRING=$QUERY_STRING"

echo "SCRIPT_NAME=$SCRIPT_NAME"

echo "REMOTE_HOST=$REMOTE_HOST"

echo "REMOTE_ADDR=$REMOTE_ADDR"

echo "REMOTE_USER=$REMOTE_USER"

echo "AUTH_TYPE=$AUTH_TYPE"

echo "CONTENT_TYPE=$CONTENT_TYPE"

echo "CONTENT_LENGTH=$CONTENT_LENGTH"

echo "</PRE></HTML>"

29.5. Введение в методы get и post

До сих пор мы рассматривали только вывод данных на экран. Для получения информации, введенной пользователем, следует использовать формы, при создании которых применяются сценарии cgi. В любом случае требуется средство, реализующее обработку результатов пользовательского ввода. Благодаря формам можно отображать текстовые поля, раскрывающиеся меню и переключатели.

После того как пользователь выполнил ввод или выбрал некоторые данные в форме, он может щелкнуть на кнопке send для передачи введенной информации сценарию, в данном случае -cценарию cgi. Как только информация будет введена, "в игру вступают" методы get и post.

вернуться

3

Эта переменная определяет адрес шлюза, используемого для подключения к Internet