Всем привет! С вами Денис Максимов!
Как защитить свой блог или сайт от спам комментариев!? Какая защита сайта от спама установлена у вас? Взялся за написание этой статьи после нападения спама в комментариях. Многие сталкивались с данной проблемой, но ни чего не предпринимали чтобы избавиться раз и навсегда от этой заразы. Реально раздражают комментарии с кучей ссылок на непонятные ресурсы, так ладно если бы они оставляли свои комменты по теме, а не комментировали пост «Как закрыть ссылки от индексации!» ссылкой, которая ведет на сайт продающий трусы или велосипеды. Было такое? Теперь мы с вами все исправим и установим защиту от спама на свой блог.
Как правило спам рассылку делают специальные программы, для этого им необходимо заполнить поля (имя, почта, сайт и саму форму комментария), они легко находят эти поля и автоматически заполняют их. Многие блоггеры ставят плагин — капчу (поле, в котором, чтобы добавить комментарий, нужно ответить на вопрос), для защиты от спам — роботов. Такая функция значительно снижает комментирование статей, потому что многим просто лень заполнять эту капчу, а также делает большую нагрузку на блог. Но все же, этот метод я также объясню как поставить.
Плагин Antispam-bee — отличный плагин для защиты от спама.
Он не использует базу данных для своих задач и поэтому, не нагружает ваш блог. Работает сразу после установки и активации. Не пропускает спам комментарии благодаря невидимому полю, которое мы с вами не видим, а спам — робот видит и заполняет его также как и все остальные поля. Весь спам, который плагин обнаружит, автоматом удаляет. Вам, за ним следить не придется! У плагина есть некоторые настройки, можете ни чего не настраивать, он и так нормально настроен и отлично работает. У меня он раньше стоял, но я его убрал, надеясь что спама не будет. Заблуждался :) Скачайте плагин и опробуйте в действии!
Следующий плагин — капча называется «WP-reCAPTCHA», с которым вы уже наверное сталкивались. Сразу скажу, что он мне не нравится, но как защитник — надежный. Для того оставления комментария нужно заполнить поле, в котором обычно не понятные фразы на английском языке. Скачайте плагин, закиньте его к себе на блог в папку с плагинами и после активируйте. Появится сообщение об ошибке. Для того чтобы исправить, нужно перейти по ссылке и зарегистрироваться для получения API ключа. Введете ключ и готово.
Защита сайта от спама без плагина!
Я предлагаю еще один вариант для защиты от спама без плагина, но необходимо будет отредактировать некоторые файлы вашего блога. Лично я стараюсь избавиться от плагинов в целях ускорения загрузки блога. Если вы не хотите сами изменять в самих файлах коды, то воспользуйтесь плагинами.
Итак! В папке с вашей темой нам нужны 2 файла, это (functions.php и comments.php) скопируйте их на рабочий стол. Рекомендую сделать еще и копии файлов, которые будете ковырять.
Вариант первый.
Откройте файл functions.php с помощью любого редактора, я пользуюсь Notepad++, и вставьте в самое начало после тега <?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; }
Если для вывода формы комментариев у вас отвечает функция comment-form, то нужно в файл 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" name="real-comment" rows="8" cols="45"></textarea></p> '; return $default; }
Проверить какая функция действует у вас не сложно. Скопируйте файл single.php на рабочий стол, и найдите в нем функцию вывода комментариев. Для этого нажмите ctrl+f и введите сначала comments_template, если ни чего не найдете, то comments_form.
Идем дальше. Данный код добавляет для спам — робота еще одну форму, которую он также заполнит. Откройте файл comments.php и найдите строку содержащую что то такое, зависит от шаблона:
<textarea id="comment" class="textarea" name="comment"></textarea>
И замените эту строку на вот эту:
<textarea id="comment" class="textarea" style="display: none;" name="comment"></textarea> <textarea id="real-comment" class="textarea" name="real-comment"></textarea>
И последний вариант, который меня полностью устраивает, именно из за него я убрал плагин Antispam-bee.
Для тех у кого comments_template отвечает за комменты, но возможно будет работать и с функцией comments_form, я не испытывал.
В файл function.php в самое начало после <?php ставим этот код:
add_filter('pre_comment_on_post', 'replacing_the_field_of_comments'); function replacing_the_field_of_comments($commentdata) { $spam_test_field = trim($_POST['comment']); if(!empty($spam_test_field)) wp_die('Спам не пройдет!'); $comment_content = trim($_POST['antispam_comment']); $_POST['comment'] = $comment_content; $comment_author = trim($_POST['villi']); $_POST['author'] = $comment_author; $comment_author_email = trim($_POST['simon']); $_POST['email'] = $comment_author_email; $comment_author_url = trim($_POST['artur']); $_POST['url'] = $comment_author_url; return $commentdata; }
Далее в файле comments.php ищем что-то похожее на такую строчку:
<textarea id="comment" tabindex="4" cols="100%" name="comment" rows="10"></textarea>
Подменить эту строку на вот такую:
<textarea id="comment" style="display: none;" name="comment"></textarea> <textarea class="textarea" id="antispam_comment" tabindex="4" cols="100%" name="antispam_comment" rows="10"></textarea>
Можно еще изменить поля ФИО, E-mail и сайт, для более надежной защиты, чтобы спам — робот вообще потерялся.
В этом же файле найдите строки, которые выводят эти поля, например такие:
<input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?> /> <label for="author"><small>Имя <?php if ($req) echo "(обязательно)"; ?></small></label> <input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" <?php if ($req) echo "aria-required='true'"; ?> /> <label for="email"><small>Почта (не будет опубликовано) <?php if ($req) echo "(обязательно)"; ?></small></label> <input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" /> <label for="url"><small>Адрес сайта</small></label>
и замените их, только очень внимательно и аккуратно на вот такие поля:
<input id="author" tabindex="1" type="text" name="villi" size="22" value="<?php echo $comment_author; ?>" /> /> <label for="author"><small>Имя <!--?php if ($req) echo "(обязательно)"; ?--></small></label> <input id="email" tabindex="2" type="text" name="simon" size="22" value="<?php echo $comment_author_email; ?>" /> /> <label for="email"><small>Почта (не будет опубликовано) <!--?php if ($req) echo "(обязательно)"; ?--></small></label> <input id="url" tabindex="3" type="text" name="artur" size="22" value="<?php echo $comment_author_url; ?>" /> <label for="url"><small>Адрес блога</small></label>
Ставьте коды осторожно не задевая сторонние скобки, кавычки и другие символы. И последнее, если вы заметили в этих строках есть названия полей (villi, simon и artur), их можете поменять на свои. Если будете менять имена, то не забудьте изменить и в файле function.php.
На этом я заканчиваю, надеюсь статья была для вас интересной и полезной!
Подписывайтесь на обновления блога для получения анонсов статей почтой!!!
Желаю Вам счастья без спама!
По мне так лучшее средство это плагин Akismet) Пока лучше него не встречал.
Согласен, плагин хороший, но я сторонник других способов решения таких задач ))), я не против плагинов, но лучше без них.
Я тоже сторонник решений без плагина, но этот считаю самым необходимым и невероятно нужным. А вы им не пользуетесь?
Раньше пользовался, пока не наткнулся на вариант без плагина.
Плагины,они вообще грузят блог-сайт,если их много,конечно если есть варианты без плагина,то это хорошо,всё идёт вперёд и новые методы появляются с каждым разом,защита блога,это самый неопходимый элемент в ведении сайта-блога