Поиск

Как работают формы

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

Краткий обзор элементов форм HTML

Перед тем как разбираться, каким образом работают формы, вы должны вспомнить роль и назначение всех элементов форм.

Исходный код в формате HTML, представленный в этой книге, неполон. Для демонстрации возможностей CGI-программ мы использовали лишь часть стандарта HTML.

Некоторые дескрипторы HTML, такие как <HEAD>, <BODY> или <DOCTYPE>, вообще не встречаются в наших примерах. Все копии экрана не содержат никаких графических элементов. Вы можетесвободно добавить их по собственному усмотрению.

Форма HTML — часть документа HTML, служащая для организации ввода информации пользователем. При загрузке броузером Web-страницы с формой различные дескрипторы HTML создают на странице зоны пользовательского ввода. Пользователь может изменять состояние таких элементов, как флажки, переключатели, списки и текстовые поля. По окончании работы с элементами ввода в Web-броузере данные формы пересылаются CGI-программедля обработки.

В листинге 18.1 приведен код HTML типичной формы.

Дескриптор <FORM> обозначает начало формы в документе HTML. Его атрибут method указывает, какой способ будет использован для передачи данных этой формы серверу — GET или POST. Если он отсутствует, для передачи данных формы CGI-программе используется метод GET. Разница между этими методами будет объяснена позже. Атрибут action определяет URL CGI-программы, получающей данные формы.

Дескриптор <INPUT> предоставляет пользователю область ввода, в данном случае пустое текстовое поле. Этому текстовому полю присвоено имя "name".

Дескриптор <TEXTAREA> отображается в броузере как поле для ввода нескольких строк текста. Его важнейший атрибут — name. Здесь его значение — "description". Каждый элемент формы HTML должен иметь свой атрибут name, не совпадающий с подобными атрибутами остальных элементов формы. Когда данные формы поступают в CGI-программу для обработки, атрибуты name позволяют идентифицировать поля данных.

Элементы переключателя являются исключением из правила, согласно которому каждый элемент формы должен иметь уникальное имя. Переключатели могут объединяться в группы. В группе может быть выделен лишь один переключатель. У каждой группы переключателей должен быть собственный атрибут name.

Последний элемент формы — кнопка Submit. После щелчка пользователя на ней значения формы передаются в CGI-программу для дальнейшей обработки. Мы поговорим об этом в следующем разделе.

В спецификации HTML 4,0 предусмотрены и другие элементы формы, однако мы не будем приводить их полное описание на страницах данной книги. Многие элементы форм содержат различные атрибуты свойств, как, например, rows и cols в элементе TEXTAREA предыдущей формы. Во всех примерах мы будем использовать лишь основные атрибуты элементов.

С полной спецификацией HTML 4.0, содержащей асе допустимые элементы форм и их атрибуты, можно ознакомиться на Web-сервере http://www.w3c.org.
Что происходит после щелчка на кнопке Submit?

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

  • Данные формы группируются Web-броузером в пары имя—значение (рис. 18.2). Например, в приведенной форме поле name получает значение введенного пользователем текста. Поле sex получает значение выделенного переключателя. Эту работу выполняет Web-броузер.

  • Устанавливается соединение с узлом, соответствующим указанному URL. Предположительно, это URL CGI-программы (рис. 18.3).

  • Имена и значения полей формы передаются в CGI-программу с помощью одного из методов: GET или POST (рис. 18.4). Пока механизм этой передачи не должен вас волновать.

  • CGI-программа получает значения, генерирует ответ и посылает его обратно броузеру (рис. 18.5). Этим ответом может быть страница HTML, страница с другой формой, переадресация на другой URL или любой другой возможный вывод CGI-программы.