Автор Тема: Скрипт форма почтой  (Прочитано 4598 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн D13@

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 153
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.tochka.ru
Скрипт форма почтой
« : 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 = Вывод "СПАСИБО"
# 2 = Переадресация на заданный URL.
$redirtype = 1;

# 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

# Заголовок отправляемого сообщения.
$subject = "Оформление заказа";

# Имена этих областей могут быть изменены, но тогда внесите такие-же изменения в шаблоны, иначе скрипт работать не будет.
$p1 = "1";
$p2 = "2";
$p3 = "3";
$p4 = "4";
$p5 = "5";
$p6 = "6";
$p7 = "7";
$p8 = "8";
$p9 = "9";
$p10 = "a";
$p11 = "b";
$p12 = "c";


# --------------------------------------------------------------------------------#

$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;

   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;
}
Error 500 - server Bo Bo

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Скрипт форма почтой
« Ответ #1 : 31 Декабря 2002, 16:34:47 »
Какой ужас! Страшная новогодняя сказка. Это я про скрипт.
Попробуй лучше сам написать, а не искать такие скрипты.

Цитировать
обрабатывает только одни поля формы input
А других не бывает. Какие поля тебе не удается обработать? Кстати, все описано в документации модуля CGI.
Литературный перевод с русского и английского на Perl. Дорого!

Оффлайн D13@

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 153
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.tochka.ru
Скрипт форма почтой
« Ответ #2 : 31 Декабря 2002, 17:01:55 »
Цитировать
А других не бывает.
В перле может я не фурычу но HTML знаю хорошо. Что не бывакт textarea, select.
Error 500 - server Bo Bo

Оффлайн Mog.

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 828
  • +0/-0
  • 0
    • Просмотр профиля
Скрипт форма почтой
« Ответ #3 : 01 Января 2003, 09:19:55 »
Цитировать
textarea, select


Бывают. И скрипту по барабану, какого типа поле, какое укажут - такое и отошлет.

Цитировать
Страшная новогодняя сказка. Это я про скрипт.

Да, уж! Все запущено. Или запутано для того, что бы пугливые юзеры не улучшали эту бодягу.
Все болезни от нервов, только сифилис от удовольствия

Оффлайн D13@

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 153
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.tochka.ru
Скрипт форма почтой
« Ответ #4 : 01 Января 2003, 09:48:06 »
Цитировать
Бывают. И скрипту по барабану, какого типа поле, какое укажут - такое и отошлет.
Не а не отсылает я уже пробывал только INPUT
Error 500 - server Bo Bo

Оффлайн D13@

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 153
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.tochka.ru
Скрипт форма почтой
« Ответ #5 : 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;
Error 500 - server Bo Bo

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Скрипт форма почтой
« Ответ #6 : 01 Января 2003, 21:20:43 »
D13@, бывают :)
Но, как уже сказалMog., разницы никакой нет.

HTML:




Perl:
use CGI qw(param);
$req=new CGI;
$text=$req->param(\'text\');
Литературный перевод с русского и английского на Perl. Дорого!

Оффлайн D13@

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 153
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.tochka.ru
Скрипт форма почтой
« Ответ #7 : 02 Января 2003, 19:59:12 »
Цитировать
use CGI qw(param);
$req=new CGI;
$text=$req->param(\'text\');

Это что дописать как есть.

Цитировать
разницы никакой нет

Ну как нет я уже тестировал и поля textarea не хочет отпровлять.
Error 500 - server Bo Bo

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Скрипт форма почтой
« Ответ #8 : 02 Января 2003, 20:15:54 »
D13@ Как модератор  настоятельно(!) прошу писать по-русски. Моего высшего образования не хватает на твои
Цитировать
Это что дописать как есть.
The documentations is your friend

Оффлайн D13@

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 153
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.tochka.ru
Скрипт форма почтой
« Ответ #9 : 02 Января 2003, 22:45:59 »
А моего среднего на вот это:
Цитировать
use CGI qw(param);
$req=new CGI;
$text=$req->param(\'text\');

Да а где по веб языкам в Москве есть курсы хорошие, где их преподают а то я тут книгами завалился и уже брежу всё из ушей лезит.
Error 500 - server Bo Bo

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Скрипт форма почтой
« Ответ #10 : 03 Января 2003, 00:07:58 »
D13@, для начала прочитай FAQ. Потом попробуй сделать маленькую HTML-форму с одним textarea-полем и простенький скрипт, который должен получить его значение (как это сделать, я тебе уже написал).
Литературный перевод с русского и английского на Perl. Дорого!

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28