Сервер Web своими руками. Язык HTML, приложения CGI и ISAPI

       

Программа CGIHELLO


Программа CGIHELLO представляет собой простейшую программу CGI, которая запускается при помощи кнопки в форме, возвращая навигатору документ HTML, созданный динамически.

Эта программа хороша для проверки возможности запуска программ CGI на вашем сервере WWW или на сервере вашего поставщика услуг Internet. Так как она очень проста, существует немного причин, по которым она могла бы не работать. Это неправильная настройка прав доступа к виртуальному каталогу, содержащему загрузочный модуль программы CGI, а также неправильная ссылка на этот каталог в параметре ACTION оператора <FORM>.

Исходный текст документа, в котором определена форма, представлен в листинге 7.4.

Листинг 7.4. Файл chap7\cgihello\cgihello.htm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">

<HTML>

  <HEAD>

    <TITLE>CGI Script Test</TITLE>

  </HEAD>

  <BODY BGCOLOR=#FFFFFF>

    <H1>Запуск программы CGI</H1>

    <FORM METHOD=GET ACTION="http://frolov/frolov-cgi/cgihello.exe">

      <INPUT TYPE=submit VALUE="Send">



    </FORM>

  </BODY>

</HTML>

В этом документе определена форма, содержащая единственную кнопку, созданную оператором <INPUT> и имеющую тип SUBMIT.

В параметре ACTION оператора <FORM> мы указали путь к программе CGI, причем этот путь является виртуальным. Для передачи данных используется метод GET.

Внешний вид формы при ее просмотре навигатором Microsoft Internet Explorer представлен на рис. 7.5.

Рис. 7.5. Форма для запуска программы CGIHELLO

В результате работы программы CGIHELLO динамически создается документ HTML, внешний вид которого показан на рис. 7.6.

Рис. 7.6. Документ HTML, создаваемый динамически программой CGGIHELLO

Рассмотрим исходный текст программы CGIHELLO (листинг 7.5).

Листинг 7.5. Файл chap7\cgihello\cgihello.c

#include <stdio.h>

#include <stdlib.h>

void main(int argc, char *argv[])

{

  printf("Content-type: text/html\n\n");

  printf("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\">");

  printf("<HTML><HEAD><TITLE>”

     ”XYZ Incorporation</TITLE></HEAD><BODY>");

  printf("<H1>Результат работы программы CGI</H1>");

  printf("<P>Эта страница создана динамически в результате"

    " работы программы CGI");

  printf("</BODY></HTML>");

}

Как видите, эта программа не отличается особой сложностью и состоит из ряда вызовов функции printf.

В первый раз функция printf выводит заголовок HTTP и пустую строку-разделитель. Далее программа CGIHELLO записывает построчно в стандартный поток вывода STDOUT текст документа HTML.



Содержание раздела