|
Программирование >> Руководство по созданию web приложений
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 с именем , при- чем каждый раз ей передаются разные параметры:
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |