Linux и UNIX: программирование в shell. Руководство разработчика
Шрифт:
<A href="#" >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.
29.5.1. Метод get
Для любой формы по умолчанию используется метод get. Это один из методов применяемых для выборки файлов из статических HTML–страниц.
Как только пользователь щелкнет на кнопке submit, информация, которая была выбрана или выбирается пользователем, добавляется к URL сервера в виде закодированной строки. Затем эта закодированная строка присваивается переменной среды сервера, query_string. Переменная request_method также используется для хранения метода формы.
Создание простой формы
Создадим простую форму,_ реализующую ссылку из документа main.shtml на сценарий books.cgi.
Вставьте следующие две строки после последней записи ссылки, которая была создана в файле main.shtml:
<BR> Basic form using GET method <A href="#" >Form1</A>
Теперь введите следующий код и сохраните его в файле books.cgi; не забудьте поместить этот файл в каталог cgi-bin.
$ pg books.cgi
#!/bin/sh
# сценарий books.cgi