Программирование => Perl => Тема начата: D13@ от 31 Декабря 2002, 14:28:25
Название: Скрипт форма почтой
Отправлено: D13@ от 31 Декабря 2002, 14:28:25
Достал простинький скрипт форма почтой но от обрабатывает только одни поля формы input Как и где дописать чтобы он обрабатывал и все другие поля которые можно построить в форме. Сам скрипт:#!/usr/bin/perl use CGI qw(:standard); # Конфигурация # -----------------------------------------------------------------#
# Маршрут к директории шаблонов. (символ / в конце - не ставится) $maindir = "/home/1128/s1344/public_html";
# Маршрут до программы sendmail $mailprog = "/usr/sbin/sendmail";
# Имя файла (не путь) формы шаблона, откуда будет послылаться сообщение. Файл должен быть в директории шаблонов. $t1 = "order.html";
# 1 Имя файла (не путь) формы шаблона, для вывода "СПАСИБО". Файл должен быть в директории шаблонов. $t2 = "formsend/yesorder.html";
# 2 Полный адрес (http://newproject.vov.ru/) для переадресации на заданный URL, после отправки сообщения. $t3 = "http://weba.net.ru";
# Имя файла (не путь) шаблона, который использует программа отправки на e-mail. $t4 = "formsend/yesorder.txt";
# Куда посылать сообщения? "To:" 1 = Не посылать, 0 = Послать на специальный адрес "To:" $us1 = 0;
# Если $us1 = 0, тогда определите адрес куда почта будет послана, если $us1 = 1, тогда это не будет выполнено если эта ячейка не заполнена. $to = "info\\@weba.net.ru"; # написание только такое имя\\@сервер.com
# Определить спец-адрес "From:" - 1 = Не посылать, 0 = Послать на специальный адрес (от кого) "From:" $us2 = 1;
# Если $us2 = 0, тогда определите адрес куда почта будет послана, если $us2 = 1, тогда это не будет выполнено если эта ячейка не заполнена. $from = "info\\@weba.net.ru"; # написание только такое имя\\@сервер.com
# Имена этих областей могут быть изменены, но тогда внесите такие-же изменения в шаблоны, иначе скрипт работать не будет. $p1 = "1"; $p2 = "2"; $p3 = "3"; $p4 = "4"; $p5 = "5"; $p6 = "6"; $p7 = "7"; $p8 = "8"; $p9 = "9"; $p10 = "a"; $p11 = "b"; $p12 = "c";
open(MAIL,"|$mailprog -t"); print MAIL "From: $from\\n"; print MAIL "To: $to\\n"; print MAIL "Subject: $subject\\n\\n"; print MAIL "$mail"; print MAIL "\\n\\nInternet Organization WEBA.\\n\\n"; close(MAIL); &PrintThanks; exit; } &PrintMainPage; sub PrintMainPage { print "Content-type: text/html\\n\\n"; print &load("$maindir/$t1"); } sub PrintThanks { if ($redirtype == 1) { $page = &load("$maindir/$t2"); $page =~ s/\\$ip/$ip/ig; $page =~ s/\\$from/$from/ig; $page =~ s/\\$to/$to/ig; $page =~ s/\\$$p1/$ap1/ig; $page =~ s/\\$$p2/$ap2/ig; $page =~ s/\\$$p3/$ap3/ig; $page =~ s/\\$$p4/$ap4/ig; $page =~ s/\\$$p5/$ap5/ig; $page =~ s/\\$$p6/$ap6/ig; $page =~ s/\\$$p7/$ap7/ig; $page =~ s/\\$$p8/$ap8/ig; $page =~ s/\\$$p9/$ap9/ig; $page =~ s/\\$$p10/$ap10/ig; print $page; } if ($redirtype == 2) { print "Location: $t3\\n\\n"; } } sub load { my $file = shift; my $string; open(INPUT, "<$file") || do { print "Content-type: text/html\\n\\n"; print "Произошла ошибка при открытии файла-шаблона. Пожалуйста попробуйте заново через 10 минут. $file"; exit; }; undef $/; $string = (); $/ = "\\n"; close(INPUT); return $string; }
Название: Скрипт форма почтой
Отправлено: YA от 31 Декабря 2002, 16:34:47
Какой ужас! Страшная новогодняя сказка. Это я про скрипт. Попробуй лучше сам написать, а не искать такие скрипты.
Цитировать
обрабатывает только одни поля формы input
А других не бывает. Какие поля тебе не удается обработать? Кстати, все описано в документации модуля CGI.
Название: Скрипт форма почтой
Отправлено: D13@ от 31 Декабря 2002, 17:01:55
Цитировать
А других не бывает.
В перле может я не фурычу но HTML знаю хорошо. Что не бывакт textarea, select.
Название: Скрипт форма почтой
Отправлено: Mog. от 01 Января 2003, 09:19:55
Цитировать
textarea, select
Бывают. И скрипту по барабану, какого типа поле, какое укажут - такое и отошлет.
Цитировать
Страшная новогодняя сказка. Это я про скрипт.
Да, уж! Все запущено. Или запутано для того, что бы пугливые юзеры не улучшали эту бодягу.
Название: Скрипт форма почтой
Отправлено: D13@ от 01 Января 2003, 09:48:06
Цитировать
Бывают. И скрипту по барабану, какого типа поле, какое укажут - такое и отошлет.
Не а не отсылает я уже пробывал только INPUT
Название: Скрипт форма почтой
Отправлено: D13@ от 01 Января 2003, 09:51:42
$action = param(\'action\');
if ($action eq "send") { print "Content-type: text/html\\n\\n"; $to = param(\'to\') unless ($us1 == 0); $from = param(\'from\') unless ($us2 == 0); $subject = param(\'subject\') unless ($subject ne ""); $ip = $ENV{\'REMOTE_ADDR\'}; $ap1 = param("$p1"); $ap2 = param("$p2"); $ap3 = param("$p3"); $ap4 = param("$p4"); $ap5 = param("$p5"); $ap6 = param("$p6"); $ap7 = param("$p7"); $ap8 = param("$p8"); $ap9 = param("$p9"); $ap10 = param("$p10"); $mail = &load("$maindir/$t4"); $mail =~ s/\\$ip/$ip/ig; $mail =~ s/\\$from/$from/ig; $mail =~ s/\\$to/$to/ig; $mail =~ s/\\$subject/$subject/ig; $mail =~ s/\\$$p1/$ap1/ig; $mail =~ s/\\$$p2/$ap2/ig; $mail =~ s/\\$$p3/$ap3/ig; $mail =~ s/\\$$p4/$ap4/ig; $mail =~ s/\\$$p5/$ap5/ig; $mail =~ s/\\$$p6/$ap6/ig; $mail =~ s/\\$$p7/$ap7/ig; $mail =~ s/\\$$p8/$ap8/ig; $mail =~ s/\\$$p9/$ap9/ig; $mail =~ s/\\$$p10/$ap10/ig; Вот эта фигня всё путает как мне кажется она и не нужна кроме определения IP $mail =~ s/\\$ip/$ip/ig;
Название: Скрипт форма почтой
Отправлено: YA от 01 Января 2003, 21:20:43
D13@, бывают :) Но, как уже сказалMog., разницы никакой нет.
HTML:
Perl: use CGI qw(param); $req=new CGI; $text=$req->param(\'text\');
Название: Скрипт форма почтой
Отправлено: D13@ от 02 Января 2003, 19:59:12
Цитировать
use CGI qw(param); $req=new CGI; $text=$req->param(\'text\');
Это что дописать как есть.
Цитировать
разницы никакой нет
Ну как нет я уже тестировал и поля textarea не хочет отпровлять.
Название: Скрипт форма почтой
Отправлено: NeoNox от 02 Января 2003, 20:15:54
D13@ Как модератор настоятельно(!) прошу писать по-русски. Моего высшего образования не хватает на твои
Цитировать
Это что дописать как есть.
Название: Скрипт форма почтой
Отправлено: D13@ от 02 Января 2003, 22:45:59
А моего среднего на вот это:
Цитировать
use CGI qw(param); $req=new CGI; $text=$req->param(\'text\');
Да а где по веб языкам в Москве есть курсы хорошие, где их преподают а то я тут книгами завалился и уже брежу всё из ушей лезит.
Название: Скрипт форма почтой
Отправлено: YA от 03 Января 2003, 00:07:58
D13@, для начала прочитай FAQ. Потом попробуй сделать маленькую HTML-форму с одним textarea-полем и простенький скрипт, который должен получить его значение (как это сделать, я тебе уже написал).