Практический Перл для начинающего
Информация - Компьютеры, программирование
Другие материалы по предмету Компьютеры, программирование
" valign="top">
Вы не указали
свое имя, E-mail, либо не заполнили сам текст Вашего
отзыва. Вернитесь, пожалуйста, на страницу формы
и заполните требуемые поля.
HTML
}
else # все данные правильно введены
{
# Если все поля заполнены правильно, то начинаем их обрабатывать.
$Text=~tr/\r\n/ /; #заменяем перевод строки на пробел
# Если в текстовом поле формы (text box) посетитель нажимал Enter,
# то нужно убрать символы перевода строки, чтобы можно было записать
# все поля формы в одну строку файла.
if ($Work eq ) {$Work= }; #если пусто - то пробел
# Если поле не заполнено, то оно равно пробелу.
$Name=~s/&/ /g;
$Work=~s/&/ /g;
$Text=~s/&/ /g;
$Email=~s/&/ /g;
# Если посетитель использовал символ &, то заменяем его на пробел,
# поскольку этот символ мы будем использовать для разделения наших полей в файле.
>guestbook.txt")||die;">open(OutFile, ">>guestbook.txt") || die;
# Открываем файл для добавления.
$Time=localtime; #получаем время
# Получаем время заполнения гостевой книги.
$line=join(&, $Time, $Name, $Work, $RadioButton, $Text, $Email, $ENV{REMOTE_HOST});
# И, наконец, слепляем все поля формы в одну строку. На всякий случай добавляем в конце
# IP адрес посетителя, взятый из переменных окружения.
print OutFile "$line\n";
close OutFile;
# Записываем полученную строку в файл и закрываем его.
# Осталось только сказать посетителю спасибо.
# выводим сообщение о успехе
print "Content-type: text/html\n\n";
print "\n" ;
print "\n" ;
print "\n" ;
print ."\n" ;
print ."\n" ;
print "\n" ;
print "\n" ;
print "\n" ;
."\n";">print ."\n" ;
print ."\n" ;
print "\n" ;
print ."\n" ;
print " \n" ;
print ."\n" ;
print ;
print ."\n" ;
print " \n" ;
print "\n" ;
print ."\n" ;
print "\n" ;
print ."\n" ;
print " \n" ;
print ."\n" ;
DoInclude("D:/InetPub/wwwroot/_menu.htm");
print ."\n" ;
print ."\n" ;
print Ваши данные."\n" ;
print " приняты. Спасибо.\n" ;
;
print ."\n" ;
print " \n" ;
print "\n" ;
print "\n" ;
print "\n" ;
print "\n" ;
print " \n" ;
print ."\n" ;
print " \n" ;
print "\n" ;
print "\n" ;
print "\n" ;
}
# Не забываем подпрограмму разбора данных из формы.
sub GetFormInput {
(*fval) = @_ if @_ ;
local ($buf);
if ($ENV{REQUEST_METHOD} eq POST) {
read(STDIN,$buf,$ENV{CONTENT_LENGTH});
}
else {
$buf=$ENV{QUERY_STRING};
}
if ($buf eq "") {
return 0 ;
}
else {
@fval=split(/&/,$buf);
foreach $i (0 .. $#fval){
($name,$val)=split (/=/,$fval[$i],2);
$val=~tr/+/ /;
$val=~ s/%(..)/pack("c",hex($1))/ge;
$name=~tr/+/ /;
$name=~ s/%(..)/pack("c",hex($1))/ge;
if (!defined($field{$name})) {
$field{$name}=$val;
}
else {
$field{$name} .= ",$val";
#if you want multi-selects to goto into an array change to:
#$field{$name} .= "\0$val";
}
}
}
return 1;
}
Вот и все. Пример работы описанного скрипта можно посмотреть на
read_guestbook.pl - чтение книги
#! e:\perl5\perl
# Первая строка, как обычно
require "ssi-pl.pl";
# Я использую навигационную панель в виде SSI-включения. Для этого используется модуль ssi-pl.pl
open(InFile, "guestbook.txt") || die;
# Открываем файл с записями гостевой книги.
@lines=;
# Читаем строки в массив.
# Выдаем шапку HTML страницы.
print <<HTML;
Content-type: text/html
">
<img src="../images/guestbook.GIF"
alt="Книга жалоб" WIDTH="258" HEIGHT="60">