Защита от спама в WordPress. Код для защиты от авто-спама в комментариях

Защита от спама в WordPress. Код для защиты от авто-спама в комментариях

09:21 17 Октябрь in Модернизация WordPress, Плагины WordPress
1 Comment

Защита от спама в WordPress

Защита от спама в WordPress чаще всего представлена плагином Akismet, который де-факто считается основным способом защиты от авто-спама в WordPress. Но ряд неудобств, сопряженных с использованием этого плагина (Получение Akismet API key, Настройки в Админке, Необходимость регистрации на WordPress.com, Необходимость постоянной очистки папки спам) зачастую отпугивает простого пользователя от включения Akismet в свой сетап по умолчанию. Тем более что существует ряд не менее эффективных в использовании, но гораздо более простых  решений.

Самый простой, и очень надежный способ, это использовать Плагин от KAMA для защиты от спама в комментариях WordPress Он не имеет настроек, скачиваете, устанавливаете, активируете, если комментарии после активации оставляются, значит плагин работает. В противном случае при отправке комментария вы увидите сообщение «Comment is blocked! Press the botton to send your comment one more time:».

Защиту от спама плагином можно проверить на  Специальной страничке имитирующей спам-программу, пройдите по ссылке и попробуйте оставить комментарий у себя на блоге. Попробуйте выключить плагин и снова оставить комментарий и вы увидите, что плагин работает.

Защита от спама. Преимущества плагина KAMA:

  1. Никаких каптчей, чекбоксов (галочек), картинок и прочей античеловечности. Присутствие плагина визуально никак не проявляется;
  2. Никакого авто-спама!
  3. Не мусорит админку оповещениями, и дополнительными настройками.
  4. И наконец он просто — РАБОТАЕТ 🙂

Если Вы, как и я, не сторонник использования плагинов, то можно воспользоваться таким очень простым методом. Суть метода очень проста. В форму отправки комментариев добавляем скрытое для пользователя поле, помеченное как обязательное к заполнению. Роботы для авто-спама — заполнят это поле, и у нас будет критерий, по которому можно отсеивать спам комментарии. Для пущей надежности, можно добавить еще один критерия проверки, основанный на том, что спам-боты не умеют выполнять программы на JavaScript. И если на кнопку «Отправить» нажмет человек, то при нажатии на кнопку выполнится JavaScript код, в результате выполнения которого в скрытое запишется значение «StopSPAM». А в случае с роботом переменная так и останется пустой.

И все что останется предпринять — это проверить в скрипте чему равна полученная переменная, если она равна проверочному слову «StopSPAM», значит сообщение отправил человек. Ну а в противном случае, — это робот.

Итак, делаем 2 проверки:

В форму добавления комментария добавляем скрытое поле с именем name=»check» и пустым значением value=»»,

// Скрытое поле заполняемое JS при нажатии кнопки Отправить
<input id="check" name="check" type="hidden" value="" />
// Визуально скрытое поле не заполняемое пользователем
<input id="check2" name="check2" style="display:none;" type="text" value="" />

В кнопку оправки формы добавляем JavaScript код:

// JavaScript код в кнопке отправки формы
<input type="submit" value="Оправить" onclick="document.getElementById('check').value = 'StopSPAM';" />

В общем случае, необходимо внести следующий код в php-скрипт, который проверяет данные из формы:

// Проверка заполнено ли поле, да - бот, нет - пользователь
if(!empty($_POST["check2"])) exit('Это поле не нужно заполнять');
// Если в поле есть StopSPAM значит JS выполнялся
if ($_POST['check'] != 'StopSPAM') exit('Защита от спама. Включите JavaScript!');

Конкретно для WordPress, необходимо внести изменения в php-скрипт, который проверяет данные из формы комментариев. Находим в /wp-comments-post.php такой код:

if ( '' == $comment_content )
	wp_die( __('<strong>ERROR</strong>: please type a comment.') );

 

И вписываем сразу после него:

if ($_POST['check'] != 'StopSPAM') wp_die('<strong>Ошибка</strong>: Защита от спама. Включите JavaScript.');
if (!empty($_POST["check2"])) wp_die('<strong>Ошибка</strong>: Это поле не нужно заполнять');

Добавляем проверку так же и в форму обратной связи (если онау Вас присутствует):

if(!empty($_POST["check2"])) exit('Это поле не нужно заполнять');
if ($_POST['check'] != 'StopSPAM') exit('<strong>Ошибка</strong>: Защита от спама. Включите JavaScript.');

Единственное неудобство, которое может доставить этот код, это то, что при обновлении WordPress Вам придется снова внести изменения, в Ваши фалы.

Нашли ошибку в тексте? Выделите ее и нажмите Ctrl + Enter
Tkacheff Mikhail

Михаил Ткачев

mikhail.tkacheff@gmail.com

WordPress — БлогоСтроение. Так и хочется срифмовать с настроением ;-). Строя сайты, часто приходится уходить "в поиск", и разгребать мегобайты "мусора" в поисках нужного ответа. Это попытка собрать рабочие решения, проверенные и опробованные мной лично. Прежде всего для себя. Но если кому то пригодится - я буду только рад! Пусть Ваше настроение всегда остается солнечным!

1Comment
  • Настя 15:57h, 20 февраля Ответить

    Спасибо, действительно способ со скрытыми полями помог, только при обновлении вордпресса изменения нужно снова вносить. Неудобно!

Post A Comment