Шаг 160.
Обработка данных в сценарии

    На этом шаге мы рассмотрим элементы обработки данных в сценарии и проиллюстрируем его работу.

    Пример 158 шага содержит также код, который не связан с созданием формы. Он состоит из одного условного оператора, в котором в качестве условия используется значение, возвращаемое функцией param(). Эта функция используется также внутри блока условного оператора. Разберем, для чего она применяется. При помощи функции param() модуля CGI можно выполнить следующие действия.

    Часть сценария, предшествующая условному оператору, предназначена для создания формы из примера 150 шага. Заключительная часть, состоящая из условного оператора, обрабатывает заполненную и отправленную Web-серверу форму. Это происходит потому, что по умолчанию приложением, обрабатывающим форму, является данный сценарий (см. описание start_form). Таким образом, в одном сценарии содержится код, и создающий форму, и ее обрабатывающий.

    Сохраним код, приведенный в примере 158 шага, в файле welcome.cgi. Этот файл можно поместить на Web-сервере в стандартный каталог cgi-bin, предназначенный для хранения CGI-сценариев. Если из удаленного браузера послать запрос на выполнение этого сценария, то Web-сервер, получив запрос, выполнит сценарий welcome.cgi. Сценарий "на лету" создаст HTML-документ, содержащий форму, и передаст его Web-серверу, который отправит документ браузеру. Браузер, получив документ, отобразит его, как это показано на рисунке 1.


Рис.1. Документ, созданный CGI-сценарием

Текст этого примера можно взять здесь.

    После заполнения формы и нажатия кнопки ОК данные формы будут вновь отправлены Web-серверу, который передаст их для обработки все тому же сценарию welcome.cgi. Сценарий "на лету" создаст новый HTML-документ с учетом полученных данных и через сервер направит его браузеру. Браузер отобразит новый документ, как показано на рисунке 2.


Рис.2. Документ, созданный после обработки данных формы

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

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
<TITLE>Пример формы</TITLE>
</HEAD>
<BODY>
<H2>Регистрационная страница Клуба любителей фантастики</H2>
Заполнив анкету, вы сможете пользоваться нашей электронной библиотекой.<BR>
<FORM METHOD="POST"  ENCTYPE="application/x-www-form-urlencoded">
Введите регистрационное имя:<INPUT TYPE="text" NAME="regname" >
<P>Введите пароль: <INPUT TYPE="password" NAME="password1"  MAXLENGTH=8>
<P>Подтвердите пароль: <INPUT TYPE="password" NAME="password2"  MAXLENGTH=8>
<P>Ваш возраст
<P>
<INPUT TYPE="radio" NAME="age" VALUE="lt20" CHECKED>до 20
<INPUT TYPE="radio" NAME="age" VALUE="20_30">20-30
<INPUT TYPE="radio" NAME="age" VALUE="30_50">30-50
<INPUT TYPE="radio" NAME="age" VALUE="gt50">старше 50
<BR><BR>На каких языках читаете:
<INPUT TYPE="checkbox" NAME="language" VALUE="русский" CHECKED>русский
<INPUT TYPE="checkbox" NAME="language" VALUE="английский">английский
<INPUT TYPE="checkbox" NAME="language" VALUE="французский">французский
<INPUT TYPE="checkbox" NAME="language" VALUE="немецкий">немецкий
<BR><BR>Какой формат данных является для Вас предпочтительным <BR>
<SELECT NAME="type">
<OPTION  VALUE="Plain text">Plain text
<OPTION  VALUE="PostScript">PostScript
<OPTION  VALUE="PDF">PDF
</SELECT>
<BR><BR>Ваши любимые авторы:<BR>
<TEXTAREA NAME="wish" ROWS=3 COLS=40></TEXTAREA><BR>
<INPUT TYPE="submit" NAME="OK" VALUE="OK">
<INPUT TYPE="reset" VALUE="Отменить">
<INPUT TYPE="hidden" NAME=".cgifields" VALUE="language">
<INPUT TYPE="hidden" NAME=".cgifields" VALUE="age">
</FORM><HR>
</BODY>
</HTML>

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

    Мы закончили изучать основы языка программирования Perl. Жедаем Вам успехов в дальнейшем освоении и использовании этого языка.




Предыдущий шаг Содержание