Защита блога на WordPress от спама

Довольно много спама приходит от ботов. Есть много плагинов, которые избавят вас от него. Многие довольно громоздки, да и разбираться в них особо не хотелось. Решил ради интереса сам написать.

Проблема, собственно, в том, что идентификаторы и имена элементов формы в WP стандартные. Да и файлы, обрабатывающие POST запросы известно как работают. Поэтому написать бота, который сам постит на сайте легко. Чтобы этого избежать достаточно проверку какую-нибудь делать. К примеру, можно проверять откуда запрос послан. В поле host запроса, должна быть страница вашего сайта. Умные боты, конечно же, могут это поле подменять.

Можно разместить капчу. Но я к ней не питаю тёплых чувств. Если вижу капчу на сайте (особенно типо той, что на ipb 3.0+), то вообще перестаю думать о комментировании :D

Решил обычный checkbox сделать. Для этого в файле шаблона формы wp-includes/comment-template.php добавляем чекбокс.

<?php if ( !is_user_logged_in() ) { ?>
	<p style="text-align:left;">
		<style type="text/css">
			#not_bot{ width:20px !important; }
		</style>
		<input  type="checkbox" id="not_bot" name="not_bot" value="not_bot">Я не бот<br />
	</p>
<?php } ?>
Теперь, в случае, если хочет комментить незарегистрированный юзер, то на экране будет checkbox.

Теперь надо обработку POST запроса подкорректировать. Для этого в файле wp-comments-post в корневой директории пишем:

$comment_not_bot      = ( isset($_POST['not_bot']) ) ? trim($_POST['not_bot']) : null;

if(!$user->ID &&  $comment_not_bot === null)
	wp_die( __('Ботам доступ запрещён.') );
Теперь, в случае, если юзер не зареген и не нажал на чекбокс перед отправкой, он увидит сообщение об ошибке.

____________________________________

Ищите хостинг? хостинг украина — ваш выбор. Выгодные условия и оперативная тех. поддержка.

Защита блога на WordPress от спама: 5 комментариев

  1. Foxter

    Я в свое время писал похожий «плагин». По сути аддон, конечно, т.к. был свой движок. Суть аддона сводилась к выводу случайных 6-ти чисел. Рядом был TextBox и надпись, которая гласила: «Если ты бот — введи этот код».

    Сейчас же использую сторонние системы для комментариев. Disqus, например…

    1. Suvitruf Автор записи

      Ну да, вариантов реализации уйма)
      Про Disqus же…Его же вроде кастомизировать нельзя? Ну там оформление, перевод и прочее. Disqus всё же для тех, кто не умеет кодить, ну или лень если :D

  2. Kudr

    я защитился от спамеров норм. у меня для комментариев дискус стоит и плагин TanTanNoodles Simple Spam Filter и Simple Trackback Validation with Topsy Blocker

    по трекбэкам спамеры идут. но они сразу блочатся.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *