|
Программирование >> Руководство по созданию web приложений
292 Базы данных в руководство Заметим, что ддя : : формы на сервер Web можно использовать графическую кнопку типа IMAGE. такой кнопки задается параметром SRC. Когда пользователь гцелкает графическую кнопку, программа CGI ползает от нее координаты точки, в которой находился курсор мыши в момент щелчка. Таким образом, возможно создание кнопки в виде сегментированного графического изображения. Программа (СП при этом сумеет определить, в какой области изображения был сделан щелчок мышью при отправке формы на обработку. Передача данных программе CGI Когда пользователь заполняет форму и щелкает кнопку типа SUBMIT либо графическую кнопку (которая выполняет аналогичную функцию), данные из полей формы вместе с именами этих полей передаются браузером серверу Web. Тот, в свою очередь, анализирует эти данные и запускает . програм- му СОТ путь к файлу которой указан в <FORM>. Перед запуском программы CGI сервер Web выбирает в зависимости от значения параметра METHOD тега один из двух . ; полученных данных для обработки - метод GET или POST. Метод GET Метод GET предполагает передаму данных программе CGI через переменные среды (environment variable). Это те самые переменные среды, которые устанавливаются в операционной системе MS-DOS командой SET. Сервер Web создает для CGI довольно много среды. Имена и назначение всех этих переменных Вы позже, а пока мы расска- жем только о самых необходимых. Прежде всего, метод GET предполагает использование переменной среды с именем OUERY STBIii. Именно сюда попадают данные из полей формы. Эти ные находятся в следующем формате: Инч1=Зна-18Н1-е1И1ря; , Здесь в качестве имен используются значения параметров NAME, задающих имена полей формы. Вместо подставляются данные из соответствую- щих полей. Сканируя содержимое текстовой строки переменной среды QUERY STRING, программа CGI найдет в ней имя любого нужного поля и соответствующее этому имени значение. Заметим, что если переключатель не отмечен, то никакие от него не передаются. Поэтому не следует думать, что в полученной строке Вы обязательно встретите имена всех полей, расположенных в , Адрес строки любой переменной среды в программе, составленной на С, легко получить с помощью функции getenv; char * г Заметим, что если Вы собираетесь модифицировать строку переменной среды, то ее следует скопировать во внутренний буфер. Операционная система сервера Web иногда не допускает прямого редактирования блока памяти, содержащего переменные среды. Строка, передаваемая в переменной QUERY STRING, закодирована с ис- пользованием так называемой кодировки . В случае все символы пробелов заменяют символами + . Кроме того, для кодов управляющих и некоторых других символов используется символов вида где -хх - это . код символа в виде двух символов ASCII. В нашей книге мы приведем исходные тексты функций, предназна-ченныхдля перекодирования информации, полученной и;; форм. Метод POST При использовании метода POST программа CGI получает данные из формы через стандартный поток ввода stdin. Если :цп)грт%т;> CGI vticunvivtm на языке программирования С, то для получения данных она может воспользоваться такими функциями, как -read или Что же касается количества байт данных, которые нужно считать из стандартного потока ввода, то эта информация программе CGI через переменную среды с именем CONTENTLENGTH. Ниже мы приводим фрагмент кода для определения размера информации для ввода : стандартный поток stdin: Size; Входные данные можно затем получить, например, образом: cha с . . fre : .. L:i=, 1. stdlr}; Разумеется, буфер для чтения данных допустимо заказывать и динамически, для чего следует воспользоваться такой функцией, как . Если в теп- <EORM> не указан параметр ENCTYPE (тип MIME . - . . . . данных) или этот параметр имеет значение данные, полученные через стандартный поток li Пе- ред использованием Вы должны их перекодировать образом. Выбор между GET и POST Метод GET обычно применяют для обработки небольших форм, так как браузеры и операционные системы накладывают ограничения на размер данных, передаваемых через :; среды fl,lNG. В этом отношении метод POST предпочтительнее, так как не ограничивает размер передаваемых данных. Передача ответа из программы CGI Вне зависимости от метода передачи данных (GET или POST) результат своей работы программа CGI направляет в стандартный поток вывода Если программа составлена на языке программирования С, для записи результат работы она может воспользоваться, например, функцией printf или Чаще всего программы CGI применяют для создания динамических . I f n HTML на основе данных, полученных из формы. В этом случае первой строкой, которую необходимо вывести в : . поток вывода sido.i будет следующая строка заголовка HTTP: Content-type: text/litml Сразу за ней необходимо вывести одну пустую строку, которая послужит разделителем между заголовком HTTP и данными документа HTML. Ниже мы фрагмент кода, в котором программа CGI формирует HTML и выводит его в стандартный поток вывода: HTML PUBLIC - HTML . - : обработки I; Обратите внимание на символы перевода строки -ХпХп . Первый из них закрывает строку заголовка ИТ Г Г, а второй нужен для создания пустой раздели-строки. Переменные среды для программы CGI Прежде livi перейти к примерам программ CGT мы расскажем о переменных среды, которые формируются для этик программ Через эти пе- ременные помимо данных из полей форм передастся и другая очень важная информация, причем ее не всегда можно игнорировать. Рассмотрим по отдельности . переменных среды. Заметим, что набор переменных, создаваемых при запуске программы С СИ. зависит от конкретной реализации сервера 4 TYPE Технология Web допускает защиту страниц HTML, когда доступ к отдельным предоставляется только для отдельных . при предъявлении пароля. Нри этом используется система аутентификации, или проверки подлинности идентификатора пользователя. Неременная среды ,V.JTH..TYPE содержит тип - - . который приме- няется сервером. Например, для сервера Web типа Microsoft Information Server при включении аутентификации в этой переменной будет храниться строка .-NTLM.. I GATEWAY INTERFACE В этой переменной находится версия интерфейса . с которой работает данный сервер. I НТТР АССЕРТ В этой переменной перечислены типы MIME, которые могут быть браузером от сервера Web. Например, сервер Information Server может передать браузеру растровые графические изображения в формате jpeg, pjpeg, x-xbitmap. Подробно эти типы данных описаны в спецификации протокола MIME, рассказ о которой выходит за рамки книги. ф HTTP REFER В переменную М записывается адрес . : . кото- рый работу программы CGI.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |