Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Защита почты с сайта, Почта работает, но нет защиты 
:(
    Опции темы
proparket
Дата 22.3.2008, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 22.3.2008

Репутация: нет
Всего: 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 = '[email protected]';

@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

Это сообщение отредактировал(а) proparket - 22.3.2008, 18:06
PM MAIL Skype   Вверх
Bulat
Дата 1.4.2008, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



proparket, боюсь без текста самой ошибки сложновато будет smile Давай конкретнее что у тебя не получается так как надо 


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
proparket
Дата 27.5.2008, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 22.3.2008

Репутация: нет
Всего: 0



Имеется ввиду, что я немогу вставить защиту вообще (методом тыка пробовал в любую часть почтового скрипта вставить). А выдает 500
PM MAIL Skype   Вверх
tolkien
Дата 27.5.2008, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 5.4.2008

Репутация: нет
Всего: 4



Что трудно локально протестить? Или хотябы посмотреить лог apache сервера там должно быть написано что за ошибка.  

Кстате что вы там вставляете? Не print случайно ли?
PM MAIL   Вверх
BurnerCode
Дата 28.5.2008, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 28.2.2008
Где: Беларусь

Репутация: нет
Всего: нет



Добавь вывод ошибки в браузер подключив этот модуль: use CGI::Carp('fatalsToBrowser'); и покажи вывод и скрипт на котором это выдает.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0502 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.