Шрифт:
До сих пор мы рассматривали только вывод данных на экран. Для получения информации, введенной пользователем, следует использовать формы, при создании которых применяются сценарии cgi. В любом случае требуется средство, реализующее обработку результатов пользовательского ввода. Благодаря формам можно отображать текстовые поля, раскрывающиеся меню и переключатели.
После того как пользователь выполнил ввод или выбрал некоторые данные в форме, он может щелкнуть на кнопке send для передачи введенной информации сценарию, в данном случае -cценарию cgi. Как только информация будет введена, "в игру вступают" методы get и post.
29.5.1. Метод get
Для любой формы по умолчанию используется метод get. Это один из методов применяемых для выборки файлов из статических HTML–страниц.
Как только пользователь щелкнет на кнопке submit, информация, которая была выбрана или выбирается пользователем, добавляется к URL сервера в виде закодированной строки. Затем эта закодированная строка присваивается переменной среды сервера, query_string. Переменная request_method также используется для хранения метода формы.
Создание простой формы
Создадим простую форму,_ реализующую ссылку из документа main.shtml на сценарий books.cgi.
Вставьте следующие две строки после последней записи ссылки, которая была создана в файле main.shtml:
<BR> Basic form using GET method <A href="#" >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.