На этом шаге мы приведем общие сведения о сценариях CGI.
Назначение CGI-программы - создать новый HTML-документ, используя данные, содержащиеся в запросе, и передать его обратно клиенту. Если такой документ уже существует, то передать ссылку на него. Какой язык можно использовать для написания CGI-программ? Сам интерфейс CGI не накладывает ограничений на выбор языка программирования. Зная, какую задачу решает CGI-программа и каким образом она получает входную информацию, мы можем назвать свойства, которыми должен обладать язык CGI-программирования.
Выбор языка зависит и от операционной системы Web-сервера. Большая часть имеющихся серверов предназначена для работы под управлением операционной системы UNIX. Учитывая эти соображения, мы можем заключить, что язык Perl, обладающий развитыми средствами обработки текста и создания сценариев, первоначально созданный для работы в ОС UNIX и перенесенный на множество других платформ, является наиболее подходящим средством создания сценариев CGI. Кроме того, CGI-программирование на языке Perl имеет поддержку в виде готовых модулей CPAN, свободно доступных в сети Internet.
CGI-сценарий на языке Perl - это программа, имеющая свою специфику. Она, как правило, генерирует HTML-документ, посылаемый клиенту в виде ответа сервера. Ответ сервера, так же, как и запрос клиента, имеет определенную структуру. Он состоит из следующих трех частей:
НТТР/1.0 200 ОК # запрос клиента обработан успешно HTTP/1.0 404 Not Found # Документ по указанному адресу не существует
Date: Mon, 20 Jul 2009 18:37:07 GMT # Текущая дата и время Server: Apache/1.3.6 # Имя и номер версии сервера Content-type: text/html # Описывает медиа-тип содержимого
CGI-программа передает результат своей работы (HTML-документ) серверу, который возвращает его клиенту. При этом сервер не анализирует и не изменяет полученные данные, он может только дополнять их некоторыми заголовками, содержащими общую информацию (например, текущая дата и время) и информацию о самом себе (например, имя и версия сервера). Информация о содержимом ответа формируется CGI-программой и должна содержать как минимум один заголовок, сообщающий браузеру формат возвращаемых данных:
Content-type: text/html
Заголовки отделяются от содержимого документа пустой строкой.
Напишем простейший CGI-сценарий, посылающий пользователю HTML-страницу с приветствием
#! /usr/bin/perl
print "Content-type: text/html\n\n";
print "<html><head><title>Привет!</title></head>\n";
print "<body>\n";
print "<h2>Bac приветствует CGI-сценарий!</h2>\n";
print "</body></html>\n";
Если поместить файл hello.cgi в каталог CGI-программ Web-сервера, а затем обратиться к нему из браузера, то браузер отобразит HTML-документ, созданный программой hello.cgi (рисунок 1).
Рис.1. Результат работы скрипта
На следующем шаге мы рассмотрим переменные среды CGI.