Внутри команды FORM может находиться все, что угодно, кроме другого
оператора FORM. Согласно
спецификации, для задания интерфейсных элементов внутри команды FORM
используются команды INPUT,
SELECT, и TEXTAREA.
Команда INPUT используется для задания простого элемента ввода внутри
FORM. Это одиночная команда, ее
ничего не окружает и она не имеет закрывающей команды
- т.е. он используется подобно команде
IMG.
Атрибуты команды INPUT:
- TYPE=параметр
- Параметр принимает одно из следующих значений:
| hidden |
Пользователю не предлагается поля для ввода, но содержимое команды передается
при подтверждении и посылке формы. Это значение может быть использовано для
передачи информации состояния при взаимодействии клиента сервера.
<INPUT TYPE=HIDDEN NAME=custom VALUE="c12-234-8534"> |
|
| image |
Картинка, по которой вы можете сделать щелчок мышью или другим указывающим
устройством, что приводит к немедленному подтверждению и отсылке формы.
Координаты выбранной точки измеряются в точках от верхнего левого угла и
возвращаются (наряду с другими компонентами формы) точно так же, как для
команды IMG.
|
| text |
Поле ввода текста, значение по умолчанию.
|
| password |
Поле ввода пароля; вводимые символы представляются как звездочки.
|
| checkbox |
Кнопка, принимающая положения on (включено) и off(выключено).
|
| radio |
Кнопка, принимающая положения on и off; причем остальные кнопки с тем-же
параметром NAME ведут себя по принципу "одна из многих".
|
| submit |
Кнопка, действие которой сводится к отсылке содержимого заполненной формы
на сервер запросов.
|
| reset |
Кнопка, которая устанавливает во всех интерфейсных элементах значения по умолчанию.
|
Просмотрщики четвертых версий позволяют организовать передачу файлов на сервер
(File - Upload) - для этого используется значение
TYPE=FILE и устанавливается режим передачи ENCTYPE.
- NAME=идентификатор
- символическое имя (оно не показывается) для этого поля ввода. Это поле
должно присутствовать для всех полей ввода кроме "submit" and "reset", т.к.
оно используется в стоке запроса при идентификации поля ввода при посылке
ее на сервер после подтверждения формы.
- VALUE=значение
- для полей ввода текста или пароля, может быть использовано для задания
начального содержания поля. Для checkbox или radio button, VALUE задает значение кнопки, когда она находится
в отмеченном состоянии (неотмеченные кнопки опускаются при посылке
запроса); значение по
умолчанию для checkbox или radio button - "on". Для типов "submit" и
"reset", VALUE может быть
использовано для задания надписи на этих кнопках.
- CHECKED (значение не требуется)
- задает что данная кнопка типа checkbox или radio button отмечены
по умолчанию; это поле работает только для кнопок типа checkbox и radio button.
- SIZE=n
- физический размер поля ввода в символах; это поле действует только для
элементов ввода текста или пароля.
Если не присутствует явно, то по умолчанию равно 20.
Многострочные поля ввода текста
могут быть заданы с помощью SIZE=ширина,высота; например SIZE=60,12. Заметим, что SIZE
атрибут не следует использовать для задания многострочных полей ввода, т.к. можно
воспользоваться командой TEXTAREA.
- MAXLENGTH=n
- максимальное количество введенных символов, которые будут приниматься для ввода,
верно только для полей ввода текста и пароля (и только в однострочных полях).
По умолчанию -
неограничено. Подразумевается, что поля ввода должны прокручиваться.
Команда SELECT
Внутри <FORM> ... </FORM>, может присутствовать любое количество команд SELECT, свободно
перемешанных с другими HTML элементами (включая INPUT и TEXTAREA)
и текстом (кроме команды FORM).
Команда SELECT во многих графических клиентах представляется как
список.
В отличие от INPUT, SELECT имеет закрывающую команду. Внутри оператора SELECT,
разрешена только последовательность команд OPTION -- за каждым из которых следует некоторое
количество простого текста (без HTML разметки); например:
<SELECT NAME="a-menu">
<OPTION> First option.
<OPTION> Second option.
</SELECT> |
Атрибуты команды SELECT:
- NAME=идентификатор
- символическое имя для этого SELECT элемента. Это поле должно присутствовать, т.к. оно
используется при посылке запроса (аналогично команде INPUT).
- SIZE=n
- если SIZE равен 1 или если этот атрибут опущен, по умолчанию SELECT будет представлен как
меню опций Motif. Если SIZE = 2 или более, SELECT будет представлен как окно выбора; значение
SIZE тогда будет определять, сколько элементов списка будут видны.
- MULTIPLE
- если присутствует (нет значения), задает, что SELECT должен позволять множественный
выбор из списка. Наличие MULTIPLE принуждает SELECT быть представленным как список выбора,
вне зависимости от значения SIZE.
Атрибуты команды OPTION:
SELECTED задает,
что эта опция выбрана по умолчанию. Если SELECT позволяет множественный
выбор (с помощью атрибута MULTIPLE ), как SELECTED могут быть помечены несколько опций.
Команда TEXTAREA
Команда TEXTAREA может быть использован для расположения многострокового поля ввода с
необязательным содержимым по умолчанию в форме. Атрибуты команды TEXTAREA следующие:
| NAME= | символическое имя поля ввода. |
| ROWS= | число строк в поле ввода( высота). |
| COLS= | число столбцов в поле ввода (ширина).
|
TEXTAREA имеет полосы прокрутки, так что может быть введено любое количество текста.
TEXTAREA требует закрывающей команды. TEXTAREA без содержания по
умолчанию выглядит примерно так:
<TEXTAREA NAME="foo" ROWS=4 COLS=40></TEXTAREA> |
TEXTAREA с содержанием по умолчанию выглядит так:
<TEXTAREA NAME="foo" ROWS=4 COLS=40>
Содержание поля ввода по умолчанию
</TEXTAREA> |
Содержание по умолчанию должно быть строгим ASCII текстом. Символы перевода строки
воспринимаются (так, что в примере выше до и после текста
"Содержание поля ввода по умолчанию" будет пустая строка).
Команда ISINDEX
Команда ISINDEX посылает на сервер только одно сообщение,
указанное в поле ввода. Как правило используется для оформления
заданий на поиск.
Синтаксис команды ISINDEX
<ISINDEX
ACTION=url
PROMPT=prompt-text>
Атрибуты команды ISINDEX:
- ACTION=url
- URL адрес сервера
запросов, куда будет отослано содержание формы после подтверждения; Если
это поле отсутствует, будет использован URL адрес текущего документа.
- PROMPT=prompt-text
-
Приглашение к посылке данных для поиска на сервер.
Если атрибут PROMPT= не используется, выводится следующее сообщение
в a text box: "You can search this index. Type the keyword(s) you want to
search for:"
После нажатия пользователем ENTER, набранный текст добавляется к
указанному адресу URL (по аналогии с методом GET для отправки FORM).
Пример
<ISINDEX ACTION="http://intranet/search" PROMPT="Type in keywords here."> |
См. пример Тест ISINDEX.
Подтверждение и посылка формы и индекса
Данные передаваемые на сервер через
(httpd
протокол (посылка индекса и формы)
активизируют выполняемую программу, URL адрес которой указан атрибутом
ACTION. Программа
(CGI script)
должна находится в директории сервера, из которой
разрешено выполнение программ (как правило это директория cgi-bin).
Данные передаются в командной строке, через переменные окружения, и через
стандартный ввод. Возвращаются на стандартный вывод. (см. краткую
инструкцию по OS UNIX).
Для метода GET
Когда нажимается кнопка submit, содержимое формы будет добавлено к URL в следующей форме:
action?name=value&name=value&name=value
(здесь "action" -- URL, заданное атрибутом ACTION в команде FORM, или URL
текущего документа, если атрибут ACTION не был задан).
Специальные символы в значениях "name" или "value" будут опущены, это
также касается символов "=" and "&".
Это означает, что не следует использовать символы "=",
которые разделяют имена и значения в названиях параметров
NAME и VALUE, и "&", которые разделяют пары name/value.
Не следует также использовать в идентификаторах символы кириллицы.
В поле ввода служебные символы будут переданы их шестнадцатиричным кодом,
т.е., если вы введете строку
"&%$", то будет получена
строка
"%26%25%24".
В некоторых случаях таким же образом передаются
символы из второй половины кодовой таблицы (в том числе и русские буквы).
Для полей ввода текста и пароля, значением будет то, что введет пользователь.
Если пользователь оставит это поле пустым, значение value также будет пустым , но
в строке запроса будет присутствовать фрагмент "name=".
Для кнопок типа checkbox и radio button, значение value определяется атрибутом VALUE в том
случае, когда кнопка отмечена. Не отмеченные кнопки при составлении строки запроса игнорируются
целиком. Несколько кнопок типа checkbox могут иметь один атрибут NAME (и различные VALUE), если
это необходимо. Кнопки типа radio button предназначены для того, чтобы вести себя по принципу "одна из
всех" и должны иметь одинаковый атрибут NAME и различные атрибуты VALUE.
Кроме данных передаются
переменные окружения:
REMOTE_ADDR=
REMOTE_HOST=
HTTP_REFERER=
REQUEST_METHOD=
QUERY_STRING=
PATH_INFO=
PATH_TRANSLATED=
SCRIPT_NAME=
HTTP_USER_AGENT=
Какие значения эти переменные могут принимать можно увидеть
в примерах.
Для метода POST
Содержимое формы кодируется точно как для метода GET (см. выше), но вместо добавления
строки к URL, заданной атрибутом формы ACTION, в качестве запроса, содержимое
посылается блоком данных (стандартный ввод) как часть операции POST. Если присутствует атрибут ACTION, то значение
URL, которое там находится, определяет, куда посылать этот блок данных. Этот метод особенно
рекомендуется при посылке больших блоков данных.
Введенную пользователем информацию сервер подает cgi-программе на стандартный ввод,
длина посылаемого файла устанавливается в переменной окружения CONTENT_LENGTH
а тип данных - в CONTENT_TYPE.
Примеры запросов к активной программе
В приведенных ниже примерах показаны значения переменных
окружения и параметров, которые передаются активной программе,
вызываемой на сервере. Примеры обрабатываются программой
test-cgi.sh (Script Shell) командного интерпретатора UNIX
( вид программы test-cgi.sh).
Прямой вызов активной программы
-
Вызов CGI script программы (test-cgi.sh) без дополнительных путей
(extra/path) и без переменных query (длинная строка параметров).
http://www.ict.nsk.su/cgi-bin/test-cgi.sh
-
Вызов CGI script программы (test-cgi.sh)
c дополнительным путем (extra/path), но без строки параметров (query).
http://www.ict.nsk.su/cgi-bin/test-cgi.sh/extra/path
-
Вызов CGI script программы (test-cgi.sh) без дополнительных путей
(extra/path), но со строкой параметров (query).
http://www.ict.nsk.su/cgi-bin/test-cgi.sh?query
-
Вызов CGI script программы (test-cgi.sh)c дополнительным путем (extra/path)
и со строкой параметров (query).
http://www.ict.nsk.su/cgi-bin/test-cgi.sh/extra/path?query
-
Вызов CGI script программы (test-cgi.sh)c дополнительным путем (extra/path)
и со строкой параметров (query) с двумя аргументами.
http://www.ict.nsk.su/cgi-bin/test-cgi.sh/extra/path?query1+query2
В пяти вышеописанных примерах вызывается
одна и та же программа (test-cgi.sh - Script shell), и ей передается
0,1,1,1 или 2 аргумента соответственно:
- extra/path - "добавочный маршрут", идущий вслед за именем исполняемой программы
- query - длинная строка параметров после знака "?"
Вызов активной программы с помощью команд FORM и ISINDEX
- Отправка HTML FORM без информации о дополнительных путях
по методу GET.
<FORM ACTION="http://adm.ict.nsk.su/cgi-bin/test-cgi.sh"
METHOD="GET">
<INPUT TYPE="checkbox" NAME="button" VALUE="on">
Нажми кнопку. <P>
<INPUT TYPE="submit" VALUE="Отправить"> <P>
</FORM> |
по методу GET.
<FORM ACTION="http://www.ict.nsk.su/cgi-bin/test-cgi.sh"
METHOD="GET">
<INPUT size=60 name="From">
<P>
<INPUT TYPE="submit" VALUE="Отправить"> <P>
</FORM> |
- Отправка HTML FORM без информации о дополнительных путях
по методу POST.
<FORM ACTION="http://www.ict.nsk.su/cgi-bin/test-cgi-post.sh"
METHOD="POST">
<INPUT size=60 name="From">
<P>
<INPUT TYPE="submit" VALUE="Отправить"> <P>
</FORM> |
-
Отправка HTML FORM c дополнительным путем (extra path) /foo
по методу POST.
<FORM ACTION="http://www.ict.nsk.su/cgi-bin/test-cgi.sh/foo"
METHOD="POST">
<INPUT TYPE="checkbox" NAME="button" VALUE="on">
Нажми кнопку. <P>
<INPUT TYPE="submit" VALUE="Отправить"> <P>
</FORM> |
- Отправка HTML ISINDEX без информации о дополнительных путях.
<ISINDEX ACTION="http://www.ict.nsk.su/cgi-bin/test-cgi.sh"
PROMPT="Тест ISINDEX"> |
Запрос на поиск ISINDEX просмотрщик может выделять двумя горизонтальными
линиями (команда <HR>).
Федотов А.М.
Введение в Internet
Документация по Интернет технологиям
Начало создания курса: Mondy, 19-Aug-1996 10:12:15 NOVST
Дата последней модификации: Sunday, 25-Mar-2001 09:53:10 NOVST
© 1996 - 2001, А.М.Федотов
© 1996 - 2001, Институт вычислительных технологий СО РАН, Новосибирск