Глава 4. Использование CGI при создании интерактивных интерфейсовСергей Нужин4.1 WWW (World Wide Web) и средства интерактивного взаимодействия 4.2Спецификация CGI
4.3Последовательность действий для обработки входных данных cgi-модуля для разных методов запроса GET и POST
Приложение 1: Конструкции языка HTML для построения форм При написании данной главы использовались материалы National Center for Supercomputing Applications 4.1 WWW (World Wide Web) и средства интерактивного взаимодействияЦель данной главы познакомить пользователя с той частью WWW-технологий которая связана с созданием интерактивных интерфейсов и предполагается что пользователь знаком с основами WWW, HTML и С/С++. В общем случае, интерактивный интерфейс пользователя представляет собой систему, обеспечивающую взаимодействие пользователя и программы. Для WWW, интерактивный интерфейс можно определить как последовательность HTML-документов, реализующих интерфейс пользователя. Можно также условно классифицировать принципы построения интерфейса по типу формирования HTML-документа:
В первом случае источником интерфейса является HTML-документ, созданный в каком-либо текстовом или HTML-ориентированном редакторе. Следовательно, данный документ остается неизменным в течение использования. Во втором случае источником интерфейса является HTML-документ сгенерированный cgi-модулем. Следовательно, появляется некоторая гибкость в видоизменении интерфейса во время использования. Таким образом, можно ввести понятие интерактивного интерфейса для WWW. Интерактивный интерфейс для WWW представляет собой последовательность статических или динамически формируемых HTML-документов, реализующих интерфейс пользователя. Практически любая задача, решающая проблему получения данных от клиента, связана с построением интерфейса. Наиболее интересным является построение интерфейсов к различным базам данных, доступ к SQL-серверу, получение информации от периферийных устройств, создание клиентских рабочих мест. Все это возможно посредством CGI(Common Gateway Interface). Common Gateway Interface (CGI) является стандартом интерфейса внешней прикладной программы с WWW сервером. Задача построения вышеназванных интерфейсов делится на две части:
Клиентская частьДля создания клиентской части необходимо создать HTML-документ, в котором реализован интерфейс с пользователем. В языке HTML это возможно посредством форм. Конструкции языка HTML, используемые при реализации форм, даны в приложении 1 к гл. 4. Серверная частьСерверная часть состоит из исполняемого модуля, решающего основные задачи обработки данных поступающих от клиентской части, формирования ответа в формате HTML, и т.д. Такой модуль называется cgi-модулем. Методы HTTP запросаДля реализации взаимодействия "клиент-сервер" важно, какой метод HTTP запроса использует клиентская часть при обращении к WWW серверу. В общем случае, запрос - это сообщение, посылаемое клиентом серверу. Первая строка HTTP запроса(см. гл.3) включает в себя метод, который должен быть применен к запрашиваемому ресурсу, идентификатор ресурса(URI-Uniform Resource Identifier), и используемую версию HTTP-протокола. В рассматриваемом нами случае, клиентская часть применяет методы запроса POST и GET. Метод POST используется для запроса серверу, чтобы тот принял информацию, включенную в запрос, как относящуюся к ресурсу, указанному идентификатором ресурса. Метод GET используется для получения любой информации, идентифицированной идентификатором ресурса в HTTP запросе. Для WWW-сервера стандарта NCSA прикладные программы или CGI-модули, обрабатывающие поток данных от клиента или (и) формирующие обратный поток данных могут быть написаны на таких языках программирования как:
4.2 Спецификация CGICGI определяет 4 информационных потока.
Рисунок 4-2. CGI-интерфейс. 4.2.1 Переменные окруженияПеременные окружения условно делятся на два типа:
К переменным первого типа относятся следующие переменные: SERVER_SOFTWARE содержит информацию о WWW сервере (название/версия) SERVER_NAME содержит информацию об имени машины, на которой запущен WWW сервер, символическое имя или IP адрес соответствующие URL. GATEWAY_INERFACE содержит информацию о версии CGI(CGI/версия) Следующие переменные являются специфичными для разных типов запросов и значения этим переменным присваиваются перед вызовом cgi-модуля. CONTENT_LENGTH значение этой переменной соответствует длине стандартного входного потока в символах. CONTENT_TYPE эта переменная специфицирована для запросов содержащих дополнительную информацию, таких как HTTP POST и PUT, и содержит тип данных этой информации. SERVER_PROTOCOL эта переменная содержит информацию об имени и версии информационного протокола (протокол/версия). SERVER_PORT значение переменной содержит номер порта, на который был послан запрос. REQUEST_METHOD метод запроса, который был использован "POST","GET","HEAD" и т.д. PATH_INFO значение переменной содержит полученный от клиента виртуальный путь до cgi-модуля PATH_TRANSLATED значение переменной содержит физический путь до cgi-модуля, преобразованный из значения PATH_INFO. SCRIPT_NAME виртуальный путь к исполняемому модулю, используемый для получения URL. QUERY_STRING значение этой переменной соответствует строке символов следующей за знаком "?" в URL соответствующему данному запросу. Эта информация не декодируется сервером. REMOTE_HOST содержит символическое имя удаленной машины, с которой был произведен запрос. В случае отсутствия данной информации сервер присваивает пустое значение и устанавливает переменную REMOTE_ADDRESS. REMOTE_ADDRESSсодержит IP адрес клиента AUTH_TYPE если WWW-сервер поддерживает аутентификацию (подтверждение подлинности) пользователей и cgi-модуль является защищенным от постороннего доступа то, значение переменной специфицирует метод аутотентификации. REMOTE_USER содержит имя пользователя в случае аутотентификации. REMOTE_IDENT содержит имя пользователя, полученное от сервера (если сервер поддерживает аутентификацию согласно RFC 931) HTTP_ACCEPT список типов MIME известных клиенту. Каждый тип в списке должен быть отделен запятой согласно спецификации HTTP (тип/подтип,тип/подтип и т.д.) HTTP_USER_AGENT название программы просмотра которую использует клиент при посылке запроса. |
Приложение 1 к гл.4 Конструкции языка HTML для построения форм<FORM атрибуты>...</FORM> использование: предназначен для получения информации от клиента и определяет начало и конец формы. атрибуты:
Важно: Формы не могут быть вложенными! Для реализации формы используются следующие теги. <INPUT> использование: предназначен для создания различных по своей функциональности полей ввода. атрибуты:
<TEXTAREA атрибуты>...</TEXTAREA> использование: предназначен для определения области ввода текста. Размер поля определяется атрибутами. атрибуты:
NAME - значение этого атрибута определяет идентификатор
поля. Возвращается при инициации формы.
<SELECT атрибуты>
использование: предназначен для определения области выбора из нескольких значений (меню). Атрибуты:
NAME - значение этого атрибута определяет идентификатор
поля. Возвращается при инициации формы. <OPTION атрибуты> значение использование: используется только с <SELECT> для определения пунктов меню. атрибуты:
SELECTED - определяет значение по умолчанию
Примечание: в [ ] даны необязательные атрибуты
|