Защита от спама в 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:
- Никаких каптчей, чекбоксов (галочек), картинок и прочей античеловечности. Присутствие плагина визуально никак не проявляется;
- Никакого авто-спама!
- Не мусорит админку оповещениями, и дополнительными настройками.
- И наконец он просто — РАБОТАЕТ 🙂
Если Вы, как и я, не сторонник использования плагинов, то можно воспользоваться таким очень простым методом. Суть метода очень проста. В форму отправки комментариев добавляем скрытое для пользователя поле, помеченное как обязательное к заполнению. Роботы для авто-спама — заполнят это поле, и у нас будет критерий, по которому можно отсеивать спам комментарии. Для пущей надежности, можно добавить еще один критерия проверки, основанный на том, что спам-боты не умеют выполнять программы на 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 Вам придется снова внести изменения, в Ваши фалы.
Спасибо, действительно способ со скрытыми полями помог, только при обновлении вордпресса изменения нужно снова вносить. Неудобно!