CGI-сценарии

   
На этом шаге мы приведем общие сведения о сценариях CGI.

   
Назначение CGI-программы - создать новый HTML-документ, используя данные, содержащиеся в
запросе, и передать его обратно клиенту. Если такой документ уже существует, то передать ссылку на него. Какой язык
можно использовать для написания CGI-программ? Сам интерфейс CGI не накладывает ограничений
на выбор языка программирования. Зная, какую задачу решает CGI-программа и каким образом она получает
входную информацию, мы можем назвать свойства, которыми должен обладать язык CGI-программирования.

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

   
Выбор языка зависит и от операционной системы Web-сервера. Большая часть имеющихся серверов
предназначена для работы под управлением операционной системы UNIX. Учитывая эти соображения, мы
можем заключить, что язык Perl, обладающий развитыми средствами обработки текста и создания сценариев,
первоначально созданный для работы в ОС UNIX и перенесенный на множество других платформ, является
наиболее подходящим средством создания сценариев CGI. Кроме того, CGI-программирование на
языке Perl имеет поддержку в виде готовых модулей CPAN, свободно доступных в сети Internet.

   
CGI-сценарий на языке Perl - это программа, имеющая свою специфику. Она, как правило, генерирует
HTML-документ, посылаемый клиенту в виде ответа сервера. Ответ сервера, так же, как и запрос клиента,
имеет определенную структуру. Он состоит из следующих трех частей:

  • Строка состояния, содержащая три поля: номер версии протокола HTTP, код состояния
    и краткое описание состояния, например:

       НТТР/1.0 200 ОК   # запрос клиента обработан успешно
       HTTP/1.0 404 Not Found   # Документ по указанному адресу не существует
    
  • Заголовки ответа, содержащие информацию о сервере и о возвращаемом HTML-документе, например:
      Date:   Mon,   20  Jul  2009  18:37:07  GMT  # Текущая дата и время
      Server:  Apache/1.3.6              # Имя и номер версии сервера
      Content-type: text/html            # Описывает медиа-тип  содержимого
    
  • Содержимое ответа - HTML-документ, являющийся результатом выполнения CGI-программы.
  •    
    CGI-программа передает результат своей работы (HTML-документ) серверу, который возвращает его
    клиенту. При этом сервер не анализирует и не изменяет полученные данные, он может только дополнять их
    некоторыми заголовками, содержащими общую информацию (например, текущая дата и время) и информацию о самом
    себе (например, имя и версия сервера). Информация о содержимом ответа формируется CGI-программой и
    должна содержать как минимум один заголовок, сообщающий браузеру формат возвращаемых данных:

      Content-type: text/html
    

       Замечание.
    Информацию о заголовках можно найти в спецификации протокола HTTP. Мы же ограничимся еще одним
    примером. Если в качестве ответа клиенту посылается статический документ, например, подтверждение о получении
    заполненной формы, то неэффективно каждый раз создавать его заново. Лучше создать один раз и сохранить в файле.
    В этом случае CGI-сценарий вместо заголовка Content-type: media-type, описывающего формат данных,
    формирует заголовок Location: URL, указывающий серверу местонахождение документа, который следует
    передать клиенту.

       
    Заголовки отделяются от содержимого документа пустой строкой.

       
    Напишем простейший 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. Результат работы скрипта

       Замечание.
    Большинство Web-серверов по умолчанию предполагают, что файлы CGI-сценариев находятся в
    специальном каталоге, обычно называемом cgi-bin. Можно настроить сервер таким образом, чтобы все файлы,
    находящиеся в определенном каталоге, он воспринимал не как обычные документы, а как выполняемые сценарии.
    Можно также указать серверу, что все файлы с определенным расширением (например, .cgi) должны
    рассматриваться как CGI-сценарий. Когда пользователь открывает URL, ассоциированный с
    CGI-npoграммой, клиент посылает запрос серверу, запрашивая файл. Сервер распознает, что запрошенный
    адрес является адресом CGI-программы, и пытается выполнить эту программу. Подробности конфигурирования
    Web-серверов можно найти в соответствующей литературе и документации на конкретный сервер.

       
    На следующем шаге мы рассмотрим переменные среды CGI.



    Вы можете оставить комментарий, или Трекбэк с вашего сайта.

    Оставить комментарий