Защита блога на 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, Коддинг
  • http://vault.foxter.ru Foxter

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

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

    • http://suvitruf.ru Suvitruf

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

  • http://kak-zhzh.ru/ numinoross

    Я не умею кодить, но по моему для вордпреса отлично справляется акисмент… Что в нем не так?

    • http://suvitruf.ru Suvitruf

      Платный?

  • http://kudrart.com/ Kudr

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

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