Forum Webscript.Ru

Разное => Поиск, изготовление скриптов и прочее... => Тема начата: Psyline от 06 Апреля 2004, 09:25:16

Название: Нужен
Отправлено: Psyline от 06 Апреля 2004, 09:25:16
Здравствуйте,

Мне нужен скрипт формособирателя (формоотправителя) на определённый e-mail. Желательно, чтобы скрипт не был привязан к конкретной форме (то есть, я сам могу создавать и размещать любые формы, но указываю для них один и тот же скрипт - с отсылкой данных форм на один и тот же e-mail). В приходящем письме в поле от кого доджен быть e-mail отправителя формы (он указывает свой e-mail в соответствующем поле), также тема письма указывается в html-коде самой формы...

Чем быстрее, тем лучше. Также, по всей видимости будет нужна помощь в установке этого скрипта на хост (valuehost.ru) Сколько это будет стоить и как оплатить?

Илья
Название: Нужен
Отправлено: Mog. от 06 Апреля 2004, 11:47:59
Это скрипт

#!/usr/bin/perl -w
$|=1;

use strict;
use CGI qw( param );
#print "Content-type: text/html\\n\\n";
my(@anketa, $from, $subject);
&get_data;

# Настройки ##############################################
my $sendmail="/usr/sbin/sendmail -t"; #путь к программе sendmail
my $to=\'adres@mail.ru\'; # на какой адрес пересылается анкета
my $redirect=\'http://www.site.ru/thanks.html\'; #Куда редиректит после отправки письма
#С каких страницы передаются данные
my @refers=(
\'http://www.site.ru/forma1.html\',
\'http://www.site.ru/forma2.html\',
\'http://www.site.ru/forma3.html\',
\'http://www.site.ru/forma4.html\'
);
##########################################################

my $refer_x=$ENV{"HTTP_REFERER"};
# Проверяем откуда пршли данные
&secure;
# Формируем сообщение
my ($cx, $c, $message);
for ($cx=0;$cx<$c;$cx++){
$message.="$anketa[$cx][0] - $anketa[$cx][1]\\n";
}

# Отправляем
&sm;

# Редирект после отправки
print "Location: $redirect\\n\\n";

exit;

# Подпрограмма безопасности
sub secure{
##########################################################
#Это написано из соображений безопасности. Н панацея, но всетаки...
my $saf_flag=0;
if(!$refer_x){$saf_flag=1}
for my $ref(@refers){
    if("$ref" eq "$refer_x"){
        $saf_flag=0;
        last;
        }
    if("$ref" ne "$refer_x"){$saf_flag=1}
    }
if($saf_flag){
    #Че-нить пишем в браузер плохому парню
    print "Content-type: text/html\\n\\n";
    print "

Вы не имеете права пользоваться этим сервисом!!!

";
   
    #Или можно сделать редирект на готовую страницу, тогда 2 следующих строки разкоментируй, а 2 вышестоящих - закомментируй
    #my $fuck_page="http://www.site.ru/fuck_off.html";
    #print "Location: $fuck_page\\n\\n";
   
    exit;
    }
###########################################################
}

# Подпрограмма получения данных из формы
sub get_data{
my @np=param();
$c=0;
for my $x(@np){
    if(($x!~/submit|subject|from/) && (param($x))){
        $anketa[$c]=["$x", param($x)];
        $c++;
        }
    }
}

# Непосредственно подпрограмма отправки
sub sm{
my $subject=param(\'subject\');
my $from=param(\'from\');
open (MAIL,"|$sendmail");
    print MAIL "To: $to\\n";
    print MAIL "From: $from\\n";
    print MAIL "Subject: $subject\\n\\n";
    print MAIL "$message";
close (MAIL);
}
Это пример формы



Форма-анкета




Как дела

Как здоровье

Ваш e-mail

За какую футбольную команду болеете









Могу помочь установить и настроить
Цитировать
Psyline:
Сколько это будет стоить и как оплатить?

0.95 японских йен, по факсу :)
Название: Нужен
Отправлено: Psyline от 06 Апреля 2004, 13:07:56
Помогите установить и настроить...  Илья
Название: Нужен
Отправлено: Mog. от 07 Апреля 2004, 08:20:40
Psyline пиши на мыло