Поиск

Скрытые поля

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

Если приведенный выше HTML-оператор поместить в форму, то новое имя ("fullnarae") и значение ("Pink Floyd") станут частью этой формы. При передаче данных формы CGI-программе, написанной на языке Perl, название скрытого поля и его значение можно будет определить с помощью функции раrаm.

Электронный магазин

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

Не следует использовать пример рассматриваемого нами электронного магазина без реализации механизма безопасной Web-транзакции, о котором пойдет речь на 20-м занятии, "Работа с HTML-кодом и CGI-программами". Обратите внимание, что в этом примере мы не обрабатываем никакие персональные данные, типа номера телефона или кредитной карточки, поскольку скрытые поля подобны обычным полям HTML-формы. Здесь вообще нети речи о какой бы то ни было безопасности.

Первая страница электронного магазина (рис. 19.1) содержит список особо рекламируемых товаров.

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

Вторая страница представляет собой полный каталог товаров электронного магазина. После передачи данных первой страницы (с рекламируемыми товарами) CGI-программе последняя выведет новую форму с полным каталогом товаров. Кроме того, выбранные ранее товары будут помещены в эту же форму в виде скрытых полей.

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

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

Если необходима и третья страница, то в ней могут присутствовать значения из первых двух страниц, опять-таки в виде скрытых полей, как показано на рис. 19.3.

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

Во-вторых, удаленные пользователи при большом желании могут изменить значения в скрытых полях. Это можно сделать, используя специальный Web-броузер или передавая данные формы вручную с помощью протокола HTTP. Поэтому при создании электронного магазина не следует хранить цены на товары в скрытых полях. Для идентификации товаров и иен используйте специальные коды. Учтите, что CGI-программа должна "заглядывать" в ценник только при отображении списка товаров.

При разработке форм имеет смысл поинтересоваться, как это делают другие, и перенять некоторый опыт использования скрытых полей для сохранения информации. При этом следует воспользоваться возможностью просмотра исходного кода страницы, которая предоставляется большинством Web-броузеров в виде команды View » Page Source. (В броузере Internet Explorer эта команда называется В виде HTML.) И не забывайте, что перенимать опыт можно лишь на уровне идей: вы не должны копировать чужую форму, поскольку копирование означает нарушение авторских прав.