Защита WordPress от спама с помощью хака подмена полей!

Привет дорогой читатель! Сегодня речь пойдет про wordpress комментарии, про спам комментарии в блогах. Я думаю, Вам как и мне, уже надоело постоянно заходить в папку «спам» и вручную перебирать комментарии автоматического или еще хуже ручного спама. После чего выискивать в этой куче хлама хороший, осмысленный комментарий, который затесался в папку спам комментарии по ошибке.

Все, верно, мне тоже это жуть как надоело. Сначала я ставил много разных антиспам плагинов для защиты wordpress от спама. Но как показала практика, все эти действия малоэффективны. Поэтому был придуман один очень интересный выход, правда, придуман был не мной! Позаимствовал я этот метод в каком-то блоге.

В общем, решил попробовать, внедрил хак на свой блог. После трех месяцев полет удачный, ни одного спам комментария за три месяца. В это трудно конечно поверить, но это так. После эксперимента пришел к выводу, что мои читатели просто обязаны знать про защиту wordpress от спам комментариев, с помощью полезного хака — «подмена полей»!

Суть метода!

Для ручного спама мы как всегда поставим плагин «Akismet». Я думаю, он должен стоять практически у каждого блоггера. Если еще не стоит, то в интернете есть масса литературы про то, как его поставить и как активировать. Данный плагин будет защищать наш блог от ручного спама в комментариях. А хак «подмена полей», в свою очередь, защитит блог от авто спама.

Думаю, стоит отметить два больших плюса такого танца с бубном: первое — избавляемся от постоянной проблемы авто спам и второе — больше не придется править файлы движка после обновления WordPress. Правда как всегда есть и минус, придется подшаманить два файла в нашей теме, comments.php и style.css. Но как по мне, данный минус незначителен.

Суть метода примерно следующая! Если Вы продвинутый блоггер, то должны знать, что стандартное поле для ввода комментариев имеет имя comment, поэтому мы скроем настоящее поле и подсунем вместо него новое поле real-comment.

Для ваших читателей и посетителей все останется как раньше, но теперь они будут заполнять видимое поле real-comment. А вот спам-скрипты будут заполнять стандартное поле comment, которое мы скроем. Они-то не понимают, что человек не сможет заполнить текстовое поле, которое не видно на страницах блога. Вот тут мы и подловим спам комментарий, ведь такой комментарий определится по заполненному невидимому полю comment.

В общем, все просто как дважды два. Человек заполняет видимое поле real-comment, а спам-скрипт заполнит по старинке стандартное поле comment, но уже невидимое. Заполненное невидимое поле и будет спам комментарием! :-) Думаю самое время приступить к делу!

1. Комментарии через функцию «comment_form ()»

Если у вас комментарии выводятся через функцию comment_form() (эта функция была введена в WordPress 3.0 для того, чтобы с помощью файла functions.php, можно было полностью заменить стандартную форму комментариев). Если ваш шаблон использует именно такую функцию, то необходимо открыть файл functions.php и добавить туда следующий код:

//Добавление своего поля для ввода комментария
add_filter('comment_form_defaults', 'change_comment_form_defaults');
function change_comment_form_defaults($default) {
  $commenter = wp_get_current_commenter();
  $default['comment_notes_after'] .=
  '<p class="comment-form-real-comment">
  <label for="real-comment">Комментарий</label><textarea id="real-comment"
  aria-required="true" rows="8" cols="45" name="real-comment"></textarea>
  </p>';
  return $default;
}
//END добавление своего поля для ввода комментария

Теперь скрываем наше стандартное поле comment, через файл «style.css»:

.comment-form-comment {display: none;}

Итак, с первой частью хака мы справились. Теперь у нас есть поле real-comment, которое видит и может заполнить посетитель, и стандартное поле comment, которое скрыто! В следующем шаге нам необходимо определить, какое из данных полей пропускать, а какое запрещать. Если заполнено видимое поле, то пропускаем, а если заполнено невидимое поле, то запрещаем. Для этого открываем файл functions.php и добавляем туда код:

//Проверка на спам
add_filter('pre_comment_on_post', 'verify_spam');
function verify_spam($commentdata) {
  $spam_test_field = trim($_POST['comment']);
  if(!empty($spam_test_field)) wp_die('Спаму нет!');
  $comment_content = trim($_POST['real-comment']);
  $_POST['comment'] = $comment_content;
  return $commentdata;
}
//END проверка на спам

2. Комментарии не через функцию «comment_form ()»

Если у вас комментарии выводятся не через функцию comment_form(), как у меня! В этом случае открываем файл comments.php и находим там код, выводящий поле для ввода комментария. Что-то похожее на:

<textarea id="comment" class="textarea" name="comment"></textarea>

Данный код необходимо заменить на:

<div class="no-spam">
  <textarea id="comment" class="textarea" name="comment"></textarea>
</div>
<textarea id="real-comment" class="textarea" name="real-comment"></textarea>

Теперь надо скрыть стандартное поле для ввода комментария. Для этого откройте файл стилей вашего шаблона «style.css» и добавьте туда код:

.no-spam {position: absolute; left: -1000px;}

или

.no-spam {display: none;}

Также и в данном способе не забываем добавить код в файле functions.php, для определения, какое из данных полей пропускать, а какое запрещать.

//Проверка на спам
add_filter('pre_comment_on_post', 'verify_spam');
function verify_spam($commentdata) {
  $spam_test_field = trim($_POST['comment']);
  if(!empty($spam_test_field)) wp_die('Спаму нет!');
  $comment_content = trim($_POST['real-comment']);
  $_POST['comment'] = $comment_content;
  return $commentdata;
}
//END проверка на спам

Вот в принципе и все! Теперь спам комментарии больше вас и ваш блог не потревожат. Если вы сомневаетесь, все ли сделали правильно, можете проверить работу данного хака по защите wordpress от спама. Для этого необходимо убрать из файла style.css внесенные изменения, обновить страничку блога, заполнить каждое поле комментариев и попытаться опубликовать комментарий!

Все вопросы, пожелания и замечания, пишите в комментариях к статье.

Похожие заметки
Последние заметки
Если вам понравилась статья, вы можете подписаться на RSS или e-mail рассылку. Для получения обновлений по электронной почте, введите ваш e-mail адрес в эту форму (доставка от SmartResponder):

24 комментария

  1. Олег,
    1

    Теперь работает. Что это было, проводил эксперименты?

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

  2. Евгений Москаленко,
    2

    Та это я хотел вернуть как раньше, собрать за пару дней спам, чтобы сделать скрин для статьи!) Раньше в неделю я получал по 20-50 спам комментариев. Но так вышло, что не углядел и один стиль не убрал, поэтому все комментарии были как спам, теперь вернул хак на место, буду продолжать жить спокойно без спама в комментариях!)

    Да, в таком случае авто-спам не видно и не слышно!) А вот ручной спам, плагинчик Akismet, соберет в кучу в папке «Спам»! Потом уже можно будет направить комментарий в корзину или одобрить!) Спасибо за помощь...

  3. Андрей,
    3

    а у меня на блоге и не тот вариант и не тот не подходит )т.е не нашел таких функций

  4. Евгений Москаленко,
    4

    Такого быть не может, скиньте мне свой файл comments.php на почту, постараюсь помочь!)

  5. Эфранта,
    5

    Спасибо, для меня актуально, одолели спамеры.

  6. Сергей,
    6

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

  7. Сергей,
    7

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

  8. Андрей Челноков,
    8

    В каком смысле подглючивать? Просто у меня тоже в админки глюки были небольшие, потом оказало что с БД проблемы.

  9. Андрей Челноков,
    9

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

  10. Всегда пожалуйста, Андрей! :) Есть еще идеи, но пока и этого способа достаточно, меня спам уже не беспокоит давненько с этим хаком. Ручной проходит, но фильтруется мною. :)

  11. Степан,
    11

    У меня вот как получается — приходит примерно 5 комментариев, и кнопка я не спам даже не помогает... Я их удаляю вручную, сейчас попробую сделать подмену полей в акисмете, как ты тут написал. Главная причина заключается в том, что в последнее время на мой блог начались ссылаться какие-то китайские сайты... Я думаю, что это может привести к АГС. Что посоветуешь сделать?

  12. Евгений Москаленко,
    12

    Не обращай внимание, потом как-то отвалятся все эти ссылочки, не стоит париться по этому поводу. :)

    А вообще рекомендую, как новичку, купить вот эти вот видео курсы — evgmoskalenko.com/makemon...video-uroki.html, затем взять на вооружение из курсов все то, что не знаешь и проделать все это на практике. По моим ссылочкам я еще и часть денег возвращаю за покупку курсов, что существенно снижает цену на покупку видео курсов.

  13. Степан,
    13

    Буквально вчера скачал видео-курс «Блоггер Профессионал», еще посмотрел только начало... Скоро буду смотреть весь, думаю, что там полно полезной информации. Кстати, решил сделать главную страницу Статической, как ты к таким страницам и блогам относишься?

  14. Евгений Москаленко,
    14

    Если честно, то не как, на то он и блог, чтобы там главная блога с записями была.

  15. RomanZmeu,
    15

    Спасибо. Пригодилось для моего блога

  16. Евгений Москаленко,
    16

    Пожалуйста. :-)

  17. Потому что это надо заставлять человека думать и что-то делать, плюс роботы обходят эти математические формулы, плюс еще одно поле, на которое посетитель должен тратить свое время.

  18. zmoe,
    18

    Да, старый известный способ, как то применял. А теперь просто поставил плагин WP Captcha Free и вообще забыл о спаме.

  19. Евгений Москаленко,
    19

    А меня каптча так и не спасла, все равно получаю спам. Вот только данный хак реально помогает.

  20. Денис,
    20

    Ух спасибо! На киносайт — самое оно. А то постоянно то спам, то еще что-то, уже даже форму комментариев убрал, а видимо на автомате все ровно спам идет.

    Весело вообщем. Спасибо, помогли!

  21. SiropchikKl,
    21

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

  22. Станислав,
    22

    Да, капча нужна, но и подмена полей как дополнительная защита не помешает

  23. Евгений Москаленко,
    23

    В связке — очень клевое решение...

  24. Максим,
    24

    После обновления wp до версии 4.4 защита перестала работать, комментарии не отправляются. Пишет: ОШИБКА: пожалуйста, введите комментарий. Как можно починить?

Оставить комментарий