Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
|
22:03:2008, 16:14
|
|
Новенький ![]() Группа: Программист Сообщений: 1 Регистрация: 22:03:2008 Пользователь №: 16 087 Специализация: паркетчик Репутация: 0
|
Всем доброго дня или вечера.
Есть на моем сайте почта (на перле .cgi) и все работает и в архив отлично пишет. Но как в плохих романах есть всегда это "но". Было уже три раза как мне спамили из сайтовой почты (с одним и тем же текстом). В последнее время проводил доработку своего форума и доски объявлений с помощью автора скрипта Spamcode (содержит генератор картинки с буквами, проверка на мат и корякский язык) - один из вариантов капчи. В данный момент автор работает над своим проектом CMS и я не могу его отвлекать, а у меня самого ничего не выходит. Я учился на художника, а не на программера. Требуется вставить в тело скрипта почты проверку на spamcode, проверку формы "message" на предмет запретных слов и вывод текста при какой-либо ошибке. Я, конечно, пробовать могу только методом тыка и при помощи корявых мозгов получается только 500 ошибка. Вот и шастаю по форумам - кто бы помог справиться Код #!/usr/bin/perl $mailprog = '/usr/lib/sendmail'; $thank_url = 'http://www.proparket.ru/thankyou.htm'; $archivefile = 'contact.txt'; $toname = 'Почта с сайта Proparket'; $tomail = 'moy@mail.ru'; @months = ("Января","Февраля","Марта","Апреля","Мая","Июня", "Июль","Августа","Сентября","Октября","Ноября","Декабря"); $at = "в"; # ..это "в" для времени русского языка; $timeoffset = +3; $timezone = '(GMT)'; read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/<!--(.|\n)*-->//g; $FORM{$name} = $value; } ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime(time+$timeoffset*3600); $time = sprintf("%02d:%02d",$hour,$min); $year += 1900; $date = "$mday $months[$mon] $year $at $time $timezone"; open(HANDLE,"|$mailprog -t") || die "Can't open $mailprog!\n"; &send_message; close(HANDLE); open(HANDLE, ">>$archivefile") || die "Can't open archive file for writing: $!"; &send_message; print HANDLE "\n=======================================\n\n"; close(HANDLE); print "Location: $thank_url\n\n";; sub send_message { print HANDLE "To: $toname <$tomail>\n"; print HANDLE "From: $FORM{'name'} <$FORM{'email'}>\n"; print HANDLE "Subject: $FORM{'subject'}\n\n"; print HANDLE "$date\n"; print HANDLE " Это сообщение пришло со страницы $ENV{'HTTP_REFERER'}.\n"; print HANDLE " IP адрес: $ENV{'REMOTE_ADDR'}, Remote host: $ENV{'REMOTE_HOST'}.\n"; print HANDLE " Сайт пользователя: $FORM{'url'}\n"; print HANDLE "------------------------------\n\n"; print HANDLE "$FORM{'message'}"; } А вот части кода, которые требуется вставить в этот скрипт: Код ############открытие библиотеки для spamcode############# Для любопытствующих могу и целиком (поподробнее) выложить.($root) = split(/\/cgi-bin\//, $ENV{SCRIPT_FILENAME}); $lib = "$root/cgi-bin/lib"; require "$lib/spamlib.pl"; ############проверка на spamcode############# $code=lc($input{'code'}); if($code ne &GetSPAMCode) { print "<font color=\"#b10000\"><h2>Не в состоянии записать сообщение</h2>\n"; print "<font size=\"2\">Вы ошиблись при вводе графического кода!</font><br></font>\n"; exit; } ############проверка на нежелательные слова############# $CheckBW = &CheckBW(\$input{'message'}); if($CheckBW >= 10){ print "<font color=\"#b10000\"><h2>Не в состоянии записать сообщение</h2>\n"; print "<font size=\"2\">В сообщении содержится масса нежелательных выражений!</font><br></font>\n"; exit; } if($CheckBW >= 5){ $e_count++; &cerror("В сообщении содержатся нежелательные выражения!<br>\n"); } Посмотрел бы кто. Может в процессе записи-перезаписи вкралась ошибка синтаксическая, но может и программная. HELP |
|
Сообщение
#1
|
|
![]() |
|
|
23:03:2008, 23:22
|
|
Продвинутый ![]() ![]() Группа: Программист Сообщений: 198 Регистрация: 4:08:2006 Из: Vladivostok.pm Пользователь №: 5 749 Специализация: Perl, Web Репутация: 4
|
Смотреть надо в логах апача, что в каком месте валится.
|
|
Сообщение
#2
|
|
![]() |
|
Текстовая версия | Сейчас: 16:05:2008 - 17:43 |