Иллюстрированный самоучитель по Perl



         

Пример создания собственного CGI-сценария - часть 2


confirmation

;}

else {

print«new_form

<htmlxhead><title>Oira6Ka при вводе napc«w</titlex/head>

<ЬойуХпЗ>Введенные Вами значения пароля не совпадают

<br><form method="get" action="/cgi-bin/registrar.cgi">

<pre>

Введите пароль: <input type="password" name="passwordl">

Подтвердите пароль: <input type="password" name="password2">

</pre>

new_form

foreach $key ( keys %FORM) {

if ($key ne "passwordl" && $key ne "password2") {

print "<input type=\"hidden\" name=$key value=$FORM{$key}>\n";

} } print «EndOfHTML

<br><br>

<input type="submit" value="OK"> <input type="reset" value="Отменить">

<i / form></body></html> EndOfHTML ;)

После вывода строки заголовка осуществляется считывание переданной серверу информации в переменную $form_data. В зависимости от метода передачи, эта информация считывается из переменной среды QUERY_STRING (метод GET) или из стандартного ввода программы (метод POST).

Считанная информация декодируется и помещается в ассоциативный массив %FORM.

Отсутствие обязательных данных — регистрационного имени и пароля — проверяется С ПОМОЩЬЮ УСЛОВИЯ if (! $FORM{' regname'} I I ! $FORM{ 'passwordl'}).

В случае отсутствия необходимых данных формируется виртуальный HTML-документ, предлагающий повторить попытку, который и посылается клиенту (рис. 15.4).

Рис 15.4. Ответ сервера в случае отсутствия обязательной информации

При выводе этого документа в операции print использована конструкция "документ здесь". Она позволяет использовать внутри себя символы, которые при заключении в обычные двойные кавычки необходимо маскировать символом "\", например, сами, двойные кавычки ", символы "@", ••$", "%".

Условие elsif ($FORM{ 'passwordl 1 } eq $FORM{ 'password2 ' }} предназначено для проверки совпадения двух копий введенного пользователем пароля. Если значения совпадают, то пользователю посылается сообщение, подтверждающее успешную регистрацию (рис. 15.5).




Содержание  Назад  Вперед