Шаг 4 - Тестирование скрипта с формой
Если скрипт работает сам по себе, вы можете оттестировать его с формой:
- Убедитесь, что web-сервер запущен.
- Запустите ваш браузер.
- Наберите URL по которому находится ваша форма (обратите внимание, что строка должна начинаться с http://, а не с file://.
- Введите ваше имя в поле формы и нажмите кнопку "Зарегистрировать".
- Вы должны увидеть сообщение вроде этого:
Спасибо, что заполнили форму
Нажмите сюда, чтобы увидеть Ваш ввод.
Это и есть страница, сгенерированная скриптом "на лету". Если вы получили сообщение об ошибке сервера, проверьте правильность расположения скрипта и правильность значения параметра action в тэге form.
- Если вы видите правильно сгенерированную страницу, нажмите на ссылку. Вы должны будете увидеть новую страницу, созданную скриптом примерно в таком виде:
Имя: Новиков
Если вы не видите этого, проверьте правильность пути в переменной $targetfile и правильность URL в предпоследней строке скрипта. В противном случае форма и скрипт правильно работают вместе. Вы успешно создали первое web-приложение.
Далее мы рассмотрим четыре части созданного нами скрипта более внимательно.
Обсуждение: Настройка скрипта
Как уже было сказано, первая часть скрипта содержит настройки, включающие в себя несколько элементов. Первая строка определяет путь к программе-интерпретатору:
#!/usr/local/bin/perl для UNIX
или
\Program Files\Perl5\perl.exe для Win32
Также в начале скрипта вы, для удобства, можете разместить комментарий о том, для чего предназначен этот скрипт.
|
|
Комментарии могут располагаться в любом месте программы и начинаются с символа #:
# Это комментарий
или
open (NAMEFILE, ">$testfile"); #Открываем файл для записи...
Также хорошей манерой является определение в начале скрипта всех констант и глобальных переменных. (Советую все пути прописывать в виде переменных, особенно если программа содержит более 50 строк, для удобства изменения местоположения файлов). Например:
$homepage = "http://server_name/home/";
Все обычные переменные в Perl начинаются с символа $. Существует много других видов переменных, таких как массивы и т.п.
Все строки программы кроме первой и комментариев должны заканчиваться на ";".
Обсуждение: Чтение данных из формы
Теперь необходимо "считать" введенные пользователем данные в переменные Perl. После того как пользователь нажмет кнопку Submit в форме браузер посылает серверу имя скрипта и данные, взятые из формы. Данные передаются скрипту на стандартный вход.
Предположим, что форма содержит следующие поля:
Имя поля в форме | Имя, определенное параметром name="xxx" в тэге поля | Данные пользователя |
Имя: | user_name | Andy Novikov |
Компания: | co_name | TeleSputnik |
Телефон: | phone | (812) 123-45-67 |
В этом случае данные будут посланы скрипту в следующем формате:
user_name=Andy+Novikov&co_name=TeleSputnik&phone=(812)+123-45-67
|
|
Perl скрипт должен разобрать эту строку по частям и сохранить в переменных для дальнейшей обработки. Строки, производящие эти действия достаточно стандартны:
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
Эта строка читает данные со стандартного входа и помещает их в переменную $buffer. Длина строки передается скрипту через переменную окружения CONTENT_LENGTH.
Как только данные помещены в переменную $buffer вы можете разбить их на отдельные переменные с соответствующими им значениями:
@pairs = split(/&/, $buffer);
Теперь мы получили массив @pairs со следующими строковыми переменными:
[1] user_name=Andy+Novikov
[2] co_name=TeleSputnik
[3] phone=(812)+123-45-67
Теперь нам необходимо разбить эти строки на пары параметр-значение:
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /; # заменяем плюсы на пробелы
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;
$input{$name} = $value;
}
Таким образом вы получаете массив переменных, индексом в котором является значение параметра name поля формы, а значением - данные, введенные в соответствующее поле.
|
|
Обсуждение: Что делать с данными?
Следующим шагом является обработка данных. Но как? Все зависит от того, что вы хотите сделать с данными. В нашем примере мы на основе полученных данных создаем новый HTML документ. Нише мы рассмотрим несколько простых примеров того, что можно сделать с полученными данными. Обратите внимание, что мы не предпринимаем попыток проверить правильность (validate) содержимого полей. Хотя в реальных скриптах это является желательным, а иногда и необходимым действием.
Обсуждение: Запись в файлы
Одно из действий, которое вы можете совершить над данными, это записать их в файл. Perl предоставляет набор функций для открытия, обработки и закрытия файлов. Таким образом вы можете создать новый HTML документ, добавить данные в уже существующий HTML документ или сохранить данные в текстовом файле для дальнейшей обработки.
Функция открытия файла выглядит следующим образом:
open (HANDLE, "name"); # Открыть файл для чтенияopen (HANDLE, ">name"); # Открыть файл для записиopen (HANDLE, ">>name"); # Открыть файл для добавления в конец
HANDLE является любым временным именем, который вы будете использовать как идентификатор файла при проведении операций. Как только файл открыт, вы можете писать в него, используя функцию print:
|
|
После завершения операций с файлом необходимо его закрыть:
close (HANDLE);
После этого все записанные данные будут сохранены на диск.
Перед осуществлением запись в файл, вы должны убедиться, что web-сервер имеет доступ к директории, в которой находится файл и имеет права на запись в этот файл.
Обратите внимание: функция close должна располагаться как можно ближе к последней функции записи в файл. Это обусловлено тем, что web-сервер выполняется в многопользовательской среде, и скрипт может запускаться одновременно несколькими пользователями. При открытии файла на запись он (файл) блокируется и другие экземпляры скрипта не смогут его открыть, что вызовет задержку в выполнении запроса.
Дата добавления: 2018-04-04; просмотров: 289; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!