Привожу пример простейшего скрипта обратной связи. Для его выполнения потребуется наличие поддержки языка Perl, знание пути расположения на сервере Perl-интерпретатора и специальной программы SENDMAIL и доступ к директории, выполняющей CGI-скрипты (как правило, это cgi-bin).
Прежде чем перейти непосредственно к самому сценарию, я расскажу, в каких случаях этот скрипт может вам понадобится. Вариантов применения может быть множество, вот некоторые из них: организация обратной связи, регистрация, добавление информации, оформление заказа и пр. Скрипт работает следующим образом: пользователь заполняет все необходимые поля обыкновенной HTML-формы, нажимает кнопку подтверждения и переходит на указанную в настройках страницу (стартовая, страница подтверждения, слова благодарности и т.д.). А на обозначенный вами электронный адрес приходит письмо с информацией, которую ввел пользователь.
Итак, начинаем с указания пути к Perl-интерпретатору:
#!/usr/bin/perl
или
#!/usr/local/bin/perl
Далее указываем путь на сервере к почтовой программе SENDMAIL, с помощью которой обработанные скриптом пользовательские данные отсылаются на ваш e-mail:
$mailprog = ‘/usr/sbin/sendmail’;
После этого идет основной код сценария:
read(STDIN, $buffer, $ENV{‘CONTENT_LENGTH’});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack(«C», hex($1))/eg;
$name =~ s/<!—(.|\n)*—>//g;
$name =~ s/<([^>]|\n)*>//g;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack(«C», hex($1))/eg;
$value =~ s/<!—(.|\n)*—>//g;
$value =~ s/<([^>]|\n)*>//g;
$FORM{$name} = $value; }
$subject = $FORM{subject};
$to = $FORM{to};
$from = $FORM{from};
$followupurl = $FORM{followupurl};
open(MAIL,»|$mailprog -t»);
print MAIL «To: $to\n»;
print MAIL «From: $from\n»;
print MAIL «Subject: $subject\n»;
print MAIL «\n»;
print MAIL «——————————————————\n»;
foreach $key (keys(%FORM)) { if ($key ne «subject» && $key ne «to» &&
$key ne «from» && $key ne «followupurl») { print MAIL «$key: $FORM{$key}\n»; }}
print MAIL «——————————————————\n»;
close(MAIL);
print «Location: $followupurl\n\n»;
Некоторые пояснения к содержанию программы:
$subject = $FORM{subject}; — переменная заголовка генерируемого письма;
$to = $FORM{to}; — переменная адресата электронного письма;
$from = $FORM{from}; — переменная отправителя электронного письма;
$followupurl = $FORM{followupurl}; — переменная страницы перехода после обработки пользовательского запроса;
print MAIL «— … —\n»; — тип разделителя в письме, генерируемым скриптом;
Сохраняем файл под любым именем с расширением .pl (например, register.pl). Теперь необходимо настроить поля формы, которая у нас будет предназначена для регистрации посетителя. Примерный листинг будет такой:
<form method=»post» action=»http://www.myserver.ru/cgi-bin/register.pl»>
<input type=»hidden» name=»to» value=»mymail@myserver.ru»>
<input type=»hidden» name=»followupurl» value=»http://www.myserver.ru/register/confirmation.html»>
<form method=»post» action=»http://www.myserver.ru/cgi-bin/register.pl»>
<input type=»hidden» name=»subject» value=»Регистрация»>
<input type=»hidden» name=»from» value=»Новый_пользователь»>
Ваше имя: <input type=»text» name=»name»>
Ваш email: <input type=»text» name=»email»>
WWW: <input type=»text» name=»url»>
Ваши комментарии: <textarea name=»comments»></textarea>
<input type=»submit» value=»ОК»>
</form>
Здесь также необходимо разъяснить некоторые моменты:
method=»post» action=»http://www.myserver.ru/cgi-bin/register.pl» — указание типа передачи данных и пути на сервере, где расположена программа-обработчик данных пользователя;
input type=»hidden» name=»to» value=»mymail@myserver.ru» — скрытое поле (невидимое пользователю), указывающее программе адрес электронной почты, на который нужно выслать данные;
input type=»hidden» name=»followupurl» value=»http://www.myserver.ru/register/confirmation.html» — скрытое поле, задающее URL перехода браузера после обработки данных скриптом;
input type=»hidden» name=»subject» value=»Регистрация» — скрытое поле заголовка письма, генерируемого программой;
input type=»hidden» name=»from» value=»Новый_пользователь» — наименование отправителя;
Остальные поля являются видимыми посетителям страницы регистрации, необходимыми для заполнения. Следует отметить, что наличие атрибута NAME во всех видимых полях формы обязательно, т.к. именно его значение будет передано скриптом по указанному e-mail’у. В случае если этот атрибут отсутствует, данные пользователя (даже если они и были введены) отправлены не будут.
В результате, общий вид сгенерированного таким образом электронного сообщения будет примерно таким:
Subject: Регистрация From: Новый_пользователь ——————————————- name: Вася Иванов email: vasya@ivanoff.com url: http://www.ivanoff.com comments: Классный у вас сайт! ——————————————- |