Программирование >>  Руководство по созданию web приложений 

1 ... 99 100 101 [ 102 ] 103 104 105 ... 141


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

Программа CONTROLS

Более сложная программа CGI с названием CONTROLS выполняет обработку данных, полученных из формы, показанной на рис. 7-2.

Т i - шш TEXT ARE \

CHECKBOX ПервьЛ Третий

Send

Рис. 7-2. Поле с элементами различныхтипов

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

Листинг 7-2 Вы найдете в файле ch7\cglliello\cgiliello.c на прилагаемом к книге компакт-диске.

Эта консольная программа не отличается особой сложностью и состоит из ряда вызовов функции printf, выполняемых функцией main:, void maindnt argc, char arovL]) {

- : :. : HTML PUBLIC ---V- : HTML 3.2 Ei\> );

Программы

: -. : работы программы CGi</ni> );

страница - динамически в результате

работы программы



; amp]

поело

of . of

teit&c . : fis St

Список иилей

ample

of

Рис. 7-3. Документ HTML, сформированный динамически программой CONTROLS

Из рисунка видно, что браузер прислал серверу Web 127 байт информации. Так как при этом метод POST, данные были направлены в стандар-

тный поток ввода. Они представлены в кодировке URL, так как содержимое переменой . -ь . равно -. - -f. . . \-::.detJ

Обратите внимание на текстовое поле с именем rextl. Все пробелы в соответствующей в кодировке I 1Г1,заменены символом Символы *!.> и ввиде -- и 12С* Функция перекодирования возвращает стро-исходный вид Sample of textl . Форма, показанная на рис. 7-2, имеет две кнопки, предназначенные для пе-данных серверу Web. Это обычная кнопка и кнопка в графическом виде. Мы щелкнули графическую кнопку, от формы пришла информация о координатах курсора мыши в i переменных с именами х и у.

Исходный текст этой формы представлен в листинге 7-3.

Листинг 7-3 Вы найдете в файле ch7iconifeli\controts.htnn на прилагаемом к книге компакт-диске.

Программа CONTROLS отображает в динамически формируемом документе ПТМТ метод, использованный для передачи (POST или GET), а также размер и тип поступающих от формы. Принятые данные отображаются как в исходном так и после перекодировки. Кроме того, в созданном динамически документе ПТМТ Вы сможете увидеть список значений всех полей, определенных в форме (рис. 7-3).



Исходный текст программы CONTROLS приведен в листинге 7-4. Листинг 7-4 Вы найдете в файле cfi7tecintrols\contrels.c на прилагаемом к книге ноипакт-дискв.

После запуска функция main программы CONTROLS выводит в стандартный ноток вывода заголовок ПТТР и начальные строки динамически формируемого документа HTML. Для вывода мы использовали функцию printf:

. PUBLIC

HTML

CGI

Далее функция main определяет использованный метод передачи данных, анализируя содержимое переменной среды BEQUI:ST, JE.THOri:

else

Это так как при разных методах передачи нужно использовать

различные методы получения данных. Значение переменной среды

программа получает при функции getenv.

Если данные передаются методом POST, программа будет считывать их из стандартного потока ввода. Размер данных находится в переменной среды СОМ-TENT LENGTH. Соответствующая текстовая строка получается функцией getenv и преобразуется в численное atoi.

Чтение данных из входного потока выполняется за один вызов f raad:

].E:ize = аixaiСagtijav( COEIEET LEND : . ISi=e, 1, - -

Этой функции мы передаем адрес буфера для записи принятых данных, размер данных, количество буферов, которые нужно считать, и входной поток.

Программа CGI сохраняет принятые данные в файле для дальнейшей обработки. Паша программа создает в текущем каталоге файл с названием recei-

f il-F--i -l opsnCreceivecl, dat , w ).

iiiize, 1, fileReceived);

voo);

каталогом при запуске этой программы в среде сервера Microsoft Information Server будет каталог с загрузочным модулем программы CONT-



1 ... 99 100 101 [ 102 ] 103 104 105 ... 141

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика