Выбрать главу

29.5.1. Метод get

Для любой формы по умолчанию используется метод get. Это один из методов применяемых для выборки файлов из статических HTML–страниц.

Как только пользователь щелкнет на кнопке submit, информация, которая была выбрана или выбирается пользователем, добавляется к URL сервера в виде закодированной строки. Затем эта закодированная строка присваивается переменной среды сервера, query_string. Переменная request_method также используется для хранения метода формы.

Создание простой формы

Создадим простую форму,_ реализующую ссылку из документа main.shtml на сценарий books.cgi.

Вставьте следующие две строки после последней записи ссылки, которая была создана в файле main.shtmclass="underline"

<BR> Basic form using GET method <A HREF="/cgi‑bin/books.cgi" >Form1</A>

Теперь введите следующий код и сохраните его в файле books.cgi; не забудьте поместить этот файл в каталог cgi‑bin.

$ pg books.cgi

#!/bin/sh

# сценарий books.cgi

echo "Content‑type: text/html"

echo ""

echo "<HTML>"

echo "<BODY>"

# вызов books_result.cgi, затем пользователь щелкает на кнопке отправки

echo "<FORM action="/cgi‑bin/books_result.cgi" METHOD=GET>"

echo "<H4> CGI FORM</H4>"

#текстовое поле, результаты ввода присвоены переменной с именем 'contact' echo "Your Name: <INPUT NAME=contact SIZE=30><BR><BR>"

#раскрытие выбранного пункта меню, присвоенного переменной 'film'

echo "<SELECT NAME=film>"

echo "<OPTION>"-— Pick a Film --"

echo "<OPTION>A Few Good Men"

echo "<OPTION>Die Hard"

echo "<OPTION>Red October"

echo "<OPTION>The Sound Of Music"

echo "<OPTION>Boys In Company C"

echo "<OPTION>Star Wars"

echo "<OPTION>Star Trek"

echo "</SELECT>"

# раскрытие выбранного пункта меню, присвоенного переменной 'actor'

echo "<SELECT NAME=actor>"

echo "<OPTION>— Pick Your Favourite Actor —"

echo "<OPTION>Bruce Willis"

echo "<OPTION>Basil Rathbone"

echo "<OPTION>Demi Moore"

echo "<OPTION>Lauren Bacall"

echo "<OPTION>Sean Connery"

echo "</SELECT>"

echo "<BR><BR>"

# имена переменных флажков 'view_cine' и 'view_vid'

echo "Do you watch films at the..<BR>"

echo "<INPUT TYPE="Checkbox" NAME=view_cine> Cinema"

echo "<INPUT TYPE="Checkbox" NAME=view_vid> On video"

echo "<BR><BR>"

# результаты ввода, присвоенного переменной 'textarea'

echo "Tell what ls your best film, or just enter some comments<BR>"

echo "<TEXTAREA COLS="30" ROWS="4" NAME="textarea"></TEXTAREA>"

echo "<BR><INPUT TYPE=Submit VALUE="Send it">"

echo "<INPUT TYPE="reset" VALUE="clear Form">"

echo "</FORM>" echo "</BODY>" echo "</HTML>"

Действие form action выбирается, как только пользователь щелкнет на кнопке 'Send it', в результате чего вызывается сценарий books_result.cgi. В этом случае будет использоваться метод get.

В форме, код которой приведен выше, отображаются два текстовых поля, два раскрывающихся поля и два флажка.

Текстовое поле, предназначенное для ввода пользовательского имени, имеет длину 30 символов; результаты ввода присваиваются переменной contact.

Первое раскрывающееся меню обеспечивает выбор любимого пользовательского фильма; выбранная опция присваивается переменной film.

Второе раскрывающееся меню обеспечивает выбор любимого актера; выбранная опция присваивается переменной actor.

Можно установить один или оба флажка, выполнив щелчок мышью на требуемом варианте. Выбранные значения хранятся в переменных view_cine и view_vid. Если пользователь указывает один из флажков, переменные должны иметь значение "on".

Область текстового поля обеспечивает ввод большего количества строк текста, чем стандартное текстовое поле (текст, разбитый на 30 столбцов и 4 строки, в нашем случае(, а вся введенная информация присваивается переменной textarea.

Для отсылки данных в качестве типа ввода указывается слово submit. Чтобы очистить форму, щелкните на кнопке clear.

Введите следующий сценарий cgi, назовите его books_result.cgi и сохраните его в каталоге cgi‑bin.

$ pg books_result.cgi

#!/bin/sh

#сценарий books_result.cgi

#вывод на печать настроек web–сервера env для метода get

echo "Content‑type: text/html"

echo ""

echo "<HTML><PRE>"

echo "<PRE>"

echo " Results from a GET form"

echo "REQUEST_METHOD : $REQUEST_METHOD"

echo "QUERY STRING : $QUERY_STRING"

echо "</PRE></HTML>"

Сценарий отображает значения пары переменных cgi, query_strinG и request_method. Переменная Query_string будет хранить все данные в виде кодированной строки, которая отправлена формой, созданной с помощью сценария books.cgi. Переменная request_method сохраняет тип используемого метода; в данном случае будет выбран метод get. На рис. 29.7 показано, как выглядит форма, созданная с помощью сценария books.cgi.