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

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


ISize);

= \0 :

\ szBuf):

szSrcBuf);

Далее наша программа перекодирует данные, полученные в кодировке URL. Перед этим принятые данные копируются в буфер, где они будут обновляться по месту. Для копирования мы закрываем буфер двоичным nv..iej. после чего копирование можно выполнить функцией копирования строки strcpy.

выполняется функцией DecodeSt г, определенной в пашем приложении. Эту функцию мы рассмотрим позже. Результат сохраняется в буфере szSrcBuf, откуда он и берется для отображения:

после гътттр(>лт</Ш>)\

szSrcBuf);

Па завершаюгцем этапе обработки данных, полученных от формы, ; ма CONTROLS записывает в выходной документ ПТМТ значения отдельных

полей. Папомним, что эти имеют формат ii...... при

этом символ v4 используется как разделитель.

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

нительным символом ** > (для простоты сканирования), после чего запускает цикл по полям формы. jz8uf [iS.ize1 = i ; szBuf[lSize + 1] = Xfi:

szPtr = - - *):

if(szPtr != NUEE)

DecodeSt

szPtr + 1;

>= (szBuf + iSliej)

ROLS. Заметим, что, для того чтобы программа CGI могла файл в ката-

необходимо соответствуюгцим образом настроить права доступа.

После сохранения принятых ; в файле программа CONTROLS выво-

дит в стандартный поток вывода содержимое некоторых переменных среды:

X - - - CONTENT EENGTHh..



break;

else break;

В этом цикле во входной строке с помощью функции St I символ-

разделитель. Если этот символ найден, мы его заменяем на двоичный нуль, после чего полученная текстовая строка значения параметра перекодируется функцией Deo( и выводится в стандартный выходной поток.

Цикл завершается, когда в процессе сканирования указатель текущей позиции выходит за границы буфера данных.

В конце программа CONTROLS закрывает документ HTML, записывая в него </BODY> и </HTML>:

Если данные передаются в программу CONTROLS методом GET, входные данные находятся в переменной среды QUEflY SIRIie. которую мы получаем следующим образом:

.szClueryStrintj = gateriwt OLiEiY.JTRjHB );

Размер строки определяется при помощи функции strlen:

Обработка принятых данных выполняется аналогично тому, как это делается методом POST. Разница заключается лишь в том, что в документе мы отображаем содержимое только переменных IEOUEST HETH00 и QIIERY STIIIG.

Теперь займемся перекодировкой принятых данных. Она выполняется функцией DecodeStr, исходный текст которой приведен ниже:

void

int sro;

int dst;

char an.

or{srfi=fl, dst=0; szStriag[src : src++, dst++)

cii =

ch = I di == V : di;

szString[dst] = ch;

If(en == Il

szString[dst] = . + 1]);

src += 2;

Эта функция сканирует строку, заменяя символы на пробелы.

Если в I строке встречается ... . - символов вида *1хх .. мы



сервер</а><Ьг>

Программа CGI принимает параметр и в зависимости от его значения отображает один из документов HTML. Например, при выборе первой строки в окне

i ее однобайтовым кодом соответствующего симвода с помощью функ-

ЩП1 : . iNex.

функция DecodeHex комбинирует значение кода симвода на старшего и младшего разряда преобразуемой комбинации символов:

аааг !)€ .

char oh;

if(str[0] >= А )

ch = ({8tr[0] 4 Oacjf) - -A*) + 10; else

ch = str[0] - CI ;

ch = 4;

if(3tr[1i >= )

ch += <(str[1] & Oxdf) - A) + 10; else

ch a- Str[1] - O*; return ch;

Программа AREF

в примерах, приведенных выше, мы использовали программы CGI только для обработки данных из полей форм. При этом адрес URL загрузочного файла граммы указывался в параметре ACTION тега <FORM>.

Однако есть и другая возможность вызова . CGI: указать их адрес в параметре HREF тега ссылки <А>. В этом случае Вы можете передать : CGI параметры, указав их после имени файла загрузочного модуля через разделительный символ < ? . Программа CGI получит строку а методом GET и сможет извлечь ее из переменной среды с именем

Все это можно использовать для того, чтобы программа CGI загружала в окно браузера тот или иной документ в зависимости от параметров, с которыми она была вызвана.

Пример документа HTML, в котором демонстрируется вызов программы CGI указанным выше способом, приведен в листинге 7-5.

Листинг 7-5 Вы найдете в файле ctiTtareftaref.lilml на прилагаемом к книге компакт-диске.

В этом документе есть три ссылки на программу CGI с именем , при-

чем каждый раз ей передаются разные параметры:



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

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