name01 Гость
|
Добавлено: Сб Ноя 13 2004 09:34 Заголовок сообщения: не могу сделать обработку формы на perl'e ... помогите plz |
|
|
Здравствуйте, проблема в следующем -
у меня есть форма и в ней один input text и 1 button (submit)
надо надо скрипт который бы обрабатывал данную форму следующим образом - когда вводишь скажем 234 в поле, ну просто число, и нажимаешь кнопку субмит то скрипт бы искал в папке TEMP скажем файл с именем 234.html и если нашел то выдавал его, а если файла такого нет как указано в поле формы то редирект на файл error.html ... я так подозреваю что скрипт не большой, а написать все равно не могу так как не программист..
если у кого что есть похожее или кто то что то знает помогите пожалуйста - ada(лягушка)mail.ru, спасибо.
или здесь отпишите код или линк на похожий скрипт..
Заранее благодарен |
|
FUKS
Зарегистрирован: 14.04.2002 Сообщения: 148 Откуда: Москва
|
Добавлено: Пн Ноя 15 2004 18:57 Заголовок сообщения: Re: не могу сделать обработку формы на perl'e ... помогите plz |
|
|
Насколько я понимаю, проблема в редиректе? Я, честно говоря, не знаю как заставить Перл выдать редиректную страницу (с кодом 302 кажется), потому как он сам формирует 200-ю ОК-ную, хотя это не значит, что такой возможности нет. А остальное просто. Код: |
sub upc { # Раскодировка URL-coded параметров
foreach (@_) {
s/\+/ /g;
s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge;
s/'/\\'/g;
}
}
# Получение параметров формы
if ($ENV{'REQUEST_METHOD'} eq 'POST') { # <form method=POST ...>
read(STDIN, $buf, $ENV{'CONTENT_LENGTH'})
} else { # <form method=GET ...>
$buf=$ENV{'QUERY_STRING'};
}
%parms=qw //; # Пустой хэш под параметры формы
@qs=split /&/,$buf; # Массив параметров формы (вместе со значениями)
foreach (@qs) { # Для каждого параметра:
my($n,$v)=split /=/; # имя поместить в $n, значение в $v
&upc ($v); # Раскодировать значение URL-coded параметра
$parms{$n}=$v # Запомнить значение в хэше
}
print "Content-type: text/html\n\n<html>"; # Выдача HTTP-заголовка
$res=open(FILNAM, "$parms{'filnam'}.html"; # Попытка открыть файл, имя которого получено из <input name=filnam>
if (!$res) {
print "<meta http-equiv='Refresh' content='0; url=http://www.mysite.com/error.html'></html>";
exit # Переслать и выйти
}
@f=<FILNAM>; # Считать файл в список (строк)
close (FILNAM); # Закрыть файл
print @f; # и выдать его клиенту
print "</html>"
|
|
|