99% защита от спама в комментариях

99защита-от-спама

Нашел интересный способ защиты комментариев от спама. Почему99% ? Потому, что во всем быть уверенным нельзя. И если Вам пишут 100% защита от спама, то Вас обманывают:) В первое время (где-то от дня до нескольких недель) не будет спама, Вы будете радоваться. НО на каждое действие есть противодействие.

Эта система мне понравилась больше других, по крайней мере спама нет пока и все делается ручками, без плагинов, поэтому для мощного усиления можете добавить еще и плагин)) И конечно же я поделюсь ею с Вами;)

Результат можно увидеть на моем блоге. В стандартных комментариях появилось новое поле ввода: повторно ввести свой логин.

Думаю смысл понятен: вводим свой логин еще раз, сравниваем результаты, если совпадают публикуем комментарий, нет – не пускаем))

Пройдем в редактор и найдем файл comments.php В удобное для Вас место ставим следующий код (если пишем на русском, предварительно измените кодировку файла на utf-8 без BOM!):

<td class="commform-spam">

<p>Повторите свой логин <span>от спама</span>:</p>

<input type="text" name="spam" id="spam" value="<?php echo $comment_author_spam; ?>" tabindex="4" />

</td>

Это новое поле для ввода. Можно например заменить поле ввода сайта. Созданный класс  commform-spam, позволит управлять полем через css.

Скачиваем с хостинга для изменения файл wp-comments-post.php в корневой директории сайта/блога. Вставляем код:

$comment_author_spam = ( isset($_POST['spam']) ) ? trim($_POST['spam']) : null;

После:

$comment_author       = ( isset($_POST['author']) )  ? trim(strip_tags($_POST['author'])) : null;

$comment_author_email = ( isset($_POST['email']) )   ? trim($_POST['email']) : null;

$comment_author_url   = ( isset($_POST['url']) )     ? trim($_POST['url']) : null;

$comment_content      = ( isset($_POST['comment']) ) ? trim($_POST['comment']) : null;

Мы проверили наличие существовании данной переменной. И поместили ее в $comment_author_spam.

Теперь ищем (у меня 85 строка)

if ( '' == $comment_content )

wp_die( __('Error: please type a comment.') );

и вставляем (если пишем на русском, предварительно измените кодировку файла на utf-8 без BOM!)

if ( '' == $comment_author_spam )

wp_die( __('Дополнительное поле не заполнено: введите логин повторно!') );

if ( $comment_author != $comment_author_spam )

wp_die( __('Спамерам вход запрещен) );

Проверяем: если пустое поле –> выводим сообщение  Дополнительное поле не заполнено: введите логин повторно!

Если переменная $comment_author – логин – не совпадает с  $comment_author_spam (новое поле, которое мы добавили)  -> выводим сообщение Спамерам вход запрещен.

Все:) Радуйтесь жизни без спама!

Спросите работает или нет? К концу июля в день до 15 спам сообщений  было зафиксировано Akismet’ ом. Видимо были найдены проходы ботами, появлялись одни и те же сообщения с множеством ссылок. Честно сейчас уже не помню когда были спам сообщения последний раз.

Вот для примера статистика спама от Akismet. (на 20 июля)spam

Переменная $comment_author_spam была взята просто для примера. Можно использовать любую другую переменную.

с/у УтБ

Видели когда нибудь летающих акул? Нет? Тогда смотрим)



Комментарии к статье

  • #

    что-то я не увидел этого поля с повторным вводом логина…

  • #

    Способ хороший. Сам давно пришел к выводу что лучшая защита, это собственная.
    Я на одном своем форуме что только не делал, не одна капча не помогала, боты это все уже давно научились обзодить. Пока сам в код парочку изменений не внес и не добавил дополнительный check box.
    Сейчас только ручные регистрации.

  • #

    не так уж и сложно просто делай пошагово) а про акулу прикольно) ток почему-то у меня на сайте не вышло поэтому я онлайн глянул

  • #

    Ага, я заметил, хорошо придумано :=) Ещё хороший результат даёт, когда флажок нужно поставить или снять, и подсчитать сумму. Последний у меня на блоге стоит.

    • #

      @Тима буквально минут 5 и все. Хорошая защита + поставить плагин как akkad и все 100% ;)

      @akkad Да мне тож понравилось, аж поставил на блог))

  • #

    Как то сложно все это устанавливать