Пример файла 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.