Одно из главных отличий Web-программирования от программирования оконных приложений (GUI) заключается в том, как приложение принимает и обрабатывает вводимые пользователем данные.
- Web-приложение состоит из как минимум двух частей, запускаемых отдельно друг от друга: первая выводит в браузер форму, определяющую расположение и структуру полей ввода, а вторая — независимо принимает введенные данные, проверяет их корректность и производит необходимые действия. В случае ошибки управление передается обратно на первую часть, которая выводит сообщения об ошибке в удобном для пользователя формате.
- GUI-приложение отображает окно с формой, содержащей поля ввода, а также задает обработчики, которые будут немедленно вызваны в ответ на то или иное действие пользователя (например, нажатие кнопки или ввод недопустимого значения). В отличие от случая Web-скрипта, приложение как бы составляет с формой единое целое.
Библиотека HTML_MetaForm, а также сопутствующая библиотека HTML_MetaFormAction позволяют свести данные различия к минимуму, не изменяя при этом традиционную структуру Web-скриптов. Вот полный список возможностей комплекса:
- Автоматическое извлечение полной информации о структуре формы (метаданные) прямо из HTML-потока с последующей передачей ее обработчику формы.
- Цифровое подписывание формы: обработчик может быть уверен, что полученные метаданные достоверны, а не подделаны злоумышленником. Обеспечение соответствий: обработчика атрибуту action формы, выбранного значения элементу выпадающего списка, допустимости текста скрытого поля.
- Сохранение сведений о структуре (тексты и значения) выпадающих списков, radio-кнопок и checkbox-ов.
- Передача в обработчик различных мета-атрибутов, задаваемых прямо в HTML-коде формы (например, сведения о валидаторах).
- Накопление сообщений об ошибках валидации, привязанных прямо к полям формы, с возможностью последующего отображения в настраиваемом дизайне. При этом данные, введенные в поля ранее, автоматически остаются на своих местах.
- Автоматический (возможен и ручной) запуск валидаторов, привязанных прямо к HTML-полям формы.
- Запуск реакции на ту или иную кнопку формы, если ошибок валидации не было.
