Поиск

Web-сервер "лишен памяти"

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

Таким образом, при каждом следующем подключении Web-сервер не в состоянии распознать броузер в качестве абонента предьщущего сеанса связи. У сервера нет простого механизма запоминания подключающихся к нему броузеров.

Аналогией этой ситуации может служить разговор между посетителем библиотеки
и библиотекарем, который лишен памяти, и посетителю во время визита разрешается
задать только один вопрос.

Посетитель может заказать у библиотекаря книгу (скажем, об Аризоне), и библиотекарь, вполне вероятно, выполнит этот заказ, поскольку поиск одной книги — это достаточно простая задача. Но посетитель не может заказать другую книгу по той же тематике, поскольку библиотекарь ничего не помнит о предыдущем заказе. Если новый запрос прозвучит как "Дайте, пожалуйста, другую книгу об Аризоне", то библиотекарь, скорее всего, принесет туже книгу, которую он выдал при первом заказе.

Единственный способ заказать вторую книгу по той же теме — сформулировать запрос следующим образом: "Мне нужна еще одна книга об Аризоне; у меня уже есть Заселение юго-запада". В этом запросе содержится достаточно информации для изложения сути проблемы, а также имеются сведения о том, какой вариант выполнения запроса нужно исключить.

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