Показано с 1 по 5 из 5

Тема: Защита гостевой книги от спама.

  1. #1

    Подскажите, как и каким образом можно защитить гостевую книгу и форму обратной связи от спама? Есть ли какие-нибудь бесплатные фильтры, скрипты?

  2. #2

    Регистрация
    16.03.2007
    Адрес
    Санкт-Петербург
    Сообщений
    10

    Хорошо

    1. Задать им незначащие теги:
    Код:
    mdeaths<em style="display: none;">[/i]@<div style="display: inline;"></div>mail.ru
    (mrdeaths@mail.ru)

    2. Функция view()
    Код:
    function view()
    ...
    3. Ну и &#39;текст на картинке&#39; реализовывается с помощью Графической библиотеки GD.

  3. #3
    Lacoste

    Спасибо. Можно подробнее о пунктах 2 и 3?

  4. #4

    Регистрация
    11.02.2007
    Адрес
    Донецк, Украина
    Сообщений
    96
    Lacoste привел лишь способы спрятать имейл-адрес на странице от спам-ботов, но насколько я понял проблема Artemij&#39;я заключалась не в том чтобы спрятать мыло, а в том что ему спамят через форму )) поэтому советы видимо немного не в тему..

    если я правильно понял суть проблеммы, то могу предложить допустим данные формы отправлять на какой-то почтовый ящик, а не сохранять в базу/файл/..., а для этого ящика использовать какой-нибудь антиспам фильтр, или еще лучше если на мейлсервере будет SpamAssassin ))

    если по какой-либо причине такой вариант не проходит (т.е. данные с формы отправляются не на мыло), то начинаем с простых способов защиты - баним айпи-адреса с которых приходил спам, можно написать простенький фильтр, который проверяет содержит ли текс какую-либо ключевую фразу, и так далее. не уверен, но наверное можно даже установить спамасасин на сервер и использовать предоставляемое им апи для такой фильтрации.. вобщем вариантов решения проблемы много, но посоветовать готовый конкретный продукт к сожалению не могу ))

    [Только зарегистрированные пользователи могут видеть ссылки. ]

    ... с помощью Графической библиотеки GB.
    видимо имелась в виду GD

  5. #5

    Регистрация
    16.03.2007
    Адрес
    Санкт-Петербург
    Сообщений
    10

    Хорошо

    2. Предположем Это наша гостевая книга:
    Код:
    <?
    echo "<html><head><title>Гостевая книга</title></head><body>";
    echo "<h1>Гостевая книга</h1>";
    
    $file_gb="./gbook/gb.txt"; *****// это файл гостевой книги
    $file_tmp="./gbook/gb_tmp.txt"; *****// это временный файл, используемый сценарием
    $Max=50; * *// максимальное число выводимых сообщений
    
    // Функция для вывода файла gb.txt
    function view()
    {
    $Messages=file(&#39;./gbook/gb.txt&#39;);
    echo "
    
    <table width=100%>"; $i=0;
    
    foreach($Messages as $v) 
    {
    $i++;
    if ($i % 2 == 0) echo "<tr><td>$v</td></tr>";
    else echo "<tr><td bgcolor=gray>$v</td></tr>";
    
    // Если номер сообщения = 50 (то есть уже выведено 50 сообщений), прерываем цикл
    if ($i==$Max) break;
    }
    }
    
    if (!isset($Post)) {
    
    // Выводим форму для ввода нового сообщения
    echo "<table width=100% border=1>";
    echo "<tr><td><h2>Новое сообщение</h2><form method=post action=$SCRIPT_NAME>";
    echo " Email: <input type=text name=email>";
    echo " Сообщение <input type=text name=mes> <input type=submit name=Post></td></tr>";
    echo "</table></form>";
    
    // Выводим сообщения 
    view();
    
    }
    else
    {
    if(file_exists($file_tmp)) die("fatal error, call administrator!");
    
    // Добавляем новое сообщение в начало файла
    if(copy($file_gb, $file_tmp))
    {
     if($w=fopen($file_gb,"w"))
     {
     *flock($w,2); *// блокируем доступ к основному файлу 
    
     *// $mes - это сообщение пользователя
     *// перед внесением сообщения в файл удалим из него HTML-теги
     // strip_tags($mes);
    
     *fwrite($w,"[".date("d.m.Y H:i:s").$email."] ". strip_tags($mes)."\n");
    
     *if(!$r=fopen($file_tmp,"r")) die("can&#39;t open file");
     *flock($r,1); *// блокируем доступ к временному файлу
    
     *while($mes=fgets($r,10240))
     *{
     * fputs($w,$mes);
     *}
    
     *// Снимаем блокировку и закрываем файлы
     *flock($r,3);
     *fclose($r);
     *flock($w,3);
     *fclose($w);
    
     *// Удаляем временный файл
     *unlink($file_tmp);
     }
    }
    echo "Сообщение успешно записано в файл";
    // Выводим гостевую книгу
    view();
    
    }
    ?>
    Обратите внимание на функцию View():
    Код:
    function view()
    {
    $Messages=file(&#39;./gbook/gb.txt&#39;);
    echo "
    
    <table width=100%>"; $i=0;
    
    foreach($Messages as $v) 
    {
    $i++;
    if ($i % 2 == 0) echo "<tr><td>$v</td></tr>";
    else echo "<tr><td bgcolor=gray>$v</td></tr>";
    3. С помощью библиотеки GD. Вот пример картинки для защиты от спам-ботов.

    Код:
    <?
    ****/*
     *Защита От спам-Ботов.
    *****/
    
    ****//
    ****// KeyImage script
    ****// версия 1.0 от 20.12.05
    ****//
    
    ****list($msec, $sec)=explode(chr(32), microtime());
    ****$mTimeStart=$sec+$msec;
    
    ****$code=substr(md5(sha1(strtok($_SERVER[&#39;QUERY_STRING&#39;], &#39;|&#39;))), 8, 6);
    
    ****$im=imagecreatetruecolor(406, 16);
    
    ****mt_srand((double)microtime()*100000000000);
    
    ****$r=mt_rand(130, 185);
    ****$g=mt_rand(130, 185);
    ****$b=mt_rand(130, 185); $k=0;
    ****for ($i=0; $i<=203; $i++) {
     *$k++; if ($k==4) $k=1;
     *if ($k==1) $r++;
     *if ($k==2) $g++;
     *if ($k==3) $b++;
     *$c[$i]=imagecolorallocate($im, $r, $g, $b);
     *imageline($im, $i, 0, $i, 16, $c[$i]);
    ****}
    ****$r1=$r; $g1=$g; $b1=$b;
    ****for ($i=203; $i<=406; $i++) {
     *$k++; if ($k==4) $k=1;
     *if ($k==1) $r--;
     *if ($k==2) $g--;
     *if ($k==3) $b--;
     *$c[$i]=imagecolorallocate($im, $r, $g, $b);
     *imageline($im, $i, 0, $i, 16, $c[$i]);
    ****}
    
    ****$r=255-$r1;
    ****$g=255-$g1;
    ****$b=255-$b1;
    
    ****$w=imagecolorallocate($im, $r, $g, $b); $k=0;
    
    ****$white=imagecolorallocate($im, 255, 255, 255);
    ****imageline($im, 0, 8, 406, 8, $white);
    
    ****$k=0;
    ****for ($i=33+mt_rand(-10, 10); $i<400; $i+=(66+mt_rand(-10, 10))) {
     *imagestring($im, 3, $i, 1, substr($code, $k, 1), $w);
     *$k++;
    ****}
    
    ****imagepng($im);
    
    ****imagedestroy($im);
    ?>

Похожие темы

  1. Макетирование книги
    от umka в разделе Печать и препресс
    Ответов: 1
    Последнее сообщение: 07.12.2010, 19:27
  2. Книги
    от the end в разделе Флейм
    Ответов: 25
    Последнее сообщение: 19.03.2008, 12:30
  3. Защита авторских прав
    от 0пасный_СпартсмЭн в разделе Теория
    Ответов: 5
    Последнее сообщение: 05.01.2008, 21:50
  4. защита страниц от исправлений
    от lika1 в разделе Печать и препресс
    Ответов: 2
    Последнее сообщение: 09.11.2007, 12:56
  5. блог против спама
    от RDesign в разделе Флейм
    Ответов: 2
    Последнее сообщение: 18.05.2007, 12:59

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •