Практический Перл для начинающего

Информация - Компьютеры, программирование

Другие материалы по предмету Компьютеры, программирование

" 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">