Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Обработка данных в форме



Посмотрим, как будет работать форма из листинга 4. Загрузив с сервера Web-страницу с формой на свой компьютер, пользователь в окне клиентского браузера вводит свои данные в поля формы, щелчком мыши устанавливает флажок, фиксирующий согласие на подписку, и щелкает на кнопке Отправить. Если ему потребуется отменить (сбросить) введенную информацию, он щелкает на кнопке Сброс. После щелчка на кнопке Отправить клиентский браузер пересылает данные, введенные в форму, на сервер, содержащий сценарий обработки данных формы. Этот сценарий автор документа HTML должен указывать с помощью адреса URL, присвоив его атрибуту ACTION элемента FORM, например, так, как это сделано в листинге 4:

<FORM ACTION="http://www.anysite.com/prog/addsubs" METHOD="post">

Здесь указано, что для обработки данных формы следует использовать программу addsubs, хранимую в каталоге /prog сервера http://www.anysite.com. Получив от браузера такого рода сообщение, сервер распознает, что по указанному в сообщении адресу находится программа. Это заставляет сервер запустить указанную программу и передать ей на обработку полученные данные формы. Метод передачи этих данных программе определяется атрибутом METOD элемента FORM. В данном случае указан метод post, но имеются и другой, более популярный метод - get (оба этих метода описаны в Приложении В).

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

Согласно протоколу CGI информация шлюзам передается в следующем формате.

Имя1=Значение1&Имя2=Значение2&...

Здесь Имя - это имя передаваемого программе параметра данных (в нашем случае это имя элемента управления формы), а Значение - это фактическое значение параметра (т.е. значение элемента управления). Способ, по которому эта информация передается шлюзу, зависит от метода запроса, указанного атрибутом METHOD формы. Для определения метода запроса шлюз должен использовать переменную окружения REQUEST_METHOD (см. Приложение В).

В случае метода GET эта строка передается как часть адреса URL запроса и будет передана шлюзу в переменной окружения QUERY_STRING (см. Приложение В).

В случае метода POST эта информация будет послана в стандартный поток ввода шлюза. В последнем случае объем информации, содержащийся в стандартном потоке ввода, определяется переменной окружения CONTENT_LENGTH, задающей число байтов в потоке. Тип передаваемых шлюзу данных определяется переменной окружения CONTENT_TYPE. Сервер не обязан посылать символ конца потока после успешной пересылки шлюзу значения переменной CONTENT_LENGTH.

Приведем пример обработки формы с помощью описанной выше процедуры. Возьмем в качестве примера форму из листинга 4. После подтверждения формы и отправки ее данных на сервер для обработки методом POST (поскольку в элементе FORM атрибут METHOD равен "post") в программу-сценарий во входном потоке поступит 42 байта, закодированных таким образом:

postal-address=ivan@email. coxn&subscribe=on

В этом случае сервер установит значение переменной CONTENT_LENGTH равным 42, а переменной CONTENT_TYPE равным "application/x-www-form-urlencoded". Первым символом в стандартном потоке ввода для сценария будет символ "р", за которым будет следовать остаток закодированной строки.

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

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

Тег <SCRIPT>

Теги <SCRIPT> позволяют включать в документы HTML так называемые клиентские сценарии, представляющие собой мобильный, перемещаемый вместе с Web-страницей, программный код, исполняемый на компьютере-клиенте Web. Загруженные в компьютер сценарии исполняются в ответ на различные события, происходящие с документом HTML, отображаемым в браузере. В число таких событий входят загрузка документа HTML в браузер, перемещение мыши над определенными областями документа HTML, отображаемыми в диалоге браузера, и другие события, аналогичные тем, что происходят при интерактивном взаимодействии пользователя с диалогами системы Windows.

Вообще говоря, сценарии, включаемые в документы HTML, бывают двух типов.

• Сценарии, выполняемые один раз при загрузке документа клиентским браузером. Для включения в документ HTML таких сценариев следует использовать тег <SCRIPT>, контейнер которого предназначен для хранения кода программы сценария.

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

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

Тег <SCRIPT> позволяет встраивать сценарий в любое место документа HTML, как в декларативный раздел, содержащийся в контейнере тега <HEAD>, так и в тело документа, содержащегося в контейнере тега <BODY>, причем произвольное число раз. Ниже перечислены некоторые атрибуты тега <SCRIPT>.

SRC - определяет адрес URL внешней программы-сценария, т.е. программы, хранимой вне данного документа, в том числе в сети Web.

ТУРЕ - задает язык программирования сценария в контейнере данного тега <SCRIPT>. Например, значение "text/javascript" указывает на использование языка JavaScript.

Сценарий может храниться в контейнере тега <SCRIPT> или во внешнем файле. Если атрибут SRC не установлен, клиентские браузеры интерпретируют содержимое контейнера <SCRIPT> как код сценария. Если атрибут SRC содержит адрес URL, клиентские браузеры игнорируют содержимое контейнера <SCRIPT> и загружают сценарий из источника, указанного адресом URL.

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

Ниже представлен пример сценария, написанного на языке JavaScript, который с помощью функции write() выводит на экран браузера приветственное сообщение.

<SCRIPT TYPE="text/javascript">

document.write ("Приветствуем, посетитель!")

</SCRIPT>

Чтобы запустить программу сценария, в код HTML следует встроить обращения к функциям, содержащимся в теге <Script>. Эти обращения будут выполняться по мере возникновения определенных событий с документом HTML. В их число входят щелчки мышью, открытие документа, выбор элемента управления в форме и другие события, называемые встроенными.





Дата публикования: 2014-11-04; Прочитано: 453 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...