Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
webdes.doc
Скачиваний:
9
Добавлен:
01.04.2025
Размер:
179.2 Кб
Скачать

Анатомия формы

Форма начинается с тега <FORM> и заканчивается тегом </FORM>. HTML-документ может содержать в себе столько форм, сколько необходимо, единственное условие – формы не должны находиться одна внутри другой. Любой HTML-текст, включая всевозможные теги, может размещаться внутри форм без ограничений, лишь бы не нарушалась вложенность инструкций.

Тег <FORM> имеет три атрибута. Обязательный атрибут ACTION определяет URL программы-обработчика данной формы. Обычно это программа в каталоге /cgi-bin на том же сервере, с которого поступила страница с формой, но иногда происходит переадресация на сервер, находящийся совсем в другом месте. Например форма запроса на поиск файла через службу Archie может размещаться в Москве (мы обычно пользуемся сервером астрономического института им. Штернберга Московского университета – www.sai.msu.su), но сама заполненная форма будет переслана на исполнение в США в Рутгеровский университет или в одну из европейских служб поиска и результат поиска наша программа-клиент получит уже оттуда.

Атрибут METHOD определяет, с помощью какого метода протокола передачи гипертекстов данные из формы будут переданы на обработку. Допустимые значения: METHOD=POST и METHOD=GET. Если значение атрибута не установлено, по умолчанию предполагается METHOD=GET. Разница между двумя методами заключается в следующем. Пусть форма создала несколько пар "имя – значение", например Name=Иванов, Age=23, Sex=male и теперь должна передать это на сервер www.opros.city.ru (адрес сервера – вымышленный). В методе GET фактически по каналу связи идет обращение к серверу вида

http://www.opros.city.ru?Name=Иванов&Age=23&Sex=male

а в методе POST к самому адресу сервера добавляется "хвост" в столько строк, сколько пар "имя – значение" определено в форме

http://www.opros.city.ru

Name=Иванов

Age=23

Sex=male

Понятно, что вторым методом можно пересылать значительно большие объемы информации, да и обработка запроса в системе Unix упрощается.

Наконец атрибут ENCTYPE определяет способ кодирования данных при передаче. Этот атрибут обычно имеет смысл опустить, при этом система генерирует его стандартное значение ENCTYPE=application/x-www-form-urlencoded, что бы это ни значило. Ну а факультативный атрибут NAME задает имя формы; иногда обработчику необходимо знать, из какой именно формы поступил запрос.

Форменные кнопки

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

<INPUT TYPE=submit>

Встретив такую строчку внутри формы, браузер нарисует на экране кнопку с надписью Submit, при нажатии на которую все имеющиеся в форме данные будут переданы обработчику, определенному в метке <FORM>.

Надпись на кнопке можно задать такую, какая нравится, путем введения атрибута VALUE="[Надпись]", например:

<INPUT TYPE=submit VALUE="Поехали!">

При опросе читателей, проводимых журналом dz-online, передача информации на сервер инициировалась нажатием на кнопку с характерной надписью "ПЛИ!".

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

<HTML> <HEAD>

<TITLE>Пример 11</TITLE>

</HEAD><BODY>

<H1>Примитивнейшая форма </H1>

<FORM ACTION="primitiv.html"> <!--Это начало формы-->

<INPUT TYPE=submit VALUE="Вернись, я все прощу...">

</FORM> <!--Это конец формы-->

</BODY>

</HTML>

Надпись, нанесенную на кнопку, можно при необходимости передать обработчику путем введения в определение кнопки атрибута NAME=[имя]:

<INPUT TYPE=submit NAME=button VALUE="Поехали!">

При нажатии на такую кнопку обработчик вместе со всеми остальными данными получит и переменную button со значением Поехали!.

В форме может быть несколько кнопок типа submit с различными именами и/или значениями. Обработчик, таким образом, может действовать по-разному в зависимости от того, какую именно кнопку submit нажал пользователь. На уже упоминавшемся сервере анекдотов в конце страницы имеются две кнопки с названиями "Вот так!" и "Как там?". При нажатии на первую из них сервер получит от Вас список номеров анекдотов, которые Вам больше всего понравились из сегодняшней подборки, и эта информация будет использована при расчете рейтингов анекдотов дня, месяца и года. При нажатии на вторую Вы получите (для сегодняшней подборки) табличку, показывающую, сколько голосов получено каждым из анекдотов на текущую минуту (и, кстати, сможете сравнить свое мнение с мнением "сетевой общественности" – мое почему-то никогда не совпадало ;-))