Автоматическая блокировка спама в комментариях на блоге WordPress

Понедельник, января 25, 2010 в 21:28

Спам

Спам — нежелательное явление в комментариях блогов на движке WordPress. С задачей блокирования спама прекрасно справляется плагин Akismet, который очень хорошо помогает. Однако, есть еще способ дополнительно усилить защиту вашего блога от спама в комментариях. Этот способ может помочь вам.

Вставьте этот код в файл functions.php. Смысл кода в том, что комментарии, содержащие любое из слов, входящих в массив $ bad_comment_content будут автоматически блокироваться. Вы можете сами редактировать список слов в массиве.

function in_comment_post_like($string, $array) {
	foreach($array as $ref) { if(strstr($string, $ref)) { return true; } }
	return false;
}
function drop_bad_comments() {
	if (!empty($_POST['comment'])) {
		$post_comment_content = $_POST['comment'];
		$lower_case_comment = strtolower($_POST['comment']);
		$bad_comment_content = array(
			'виагра',
			'порно онлайн',
			'наращивание волос',
			'[url=http',
			'[link=http',
			'смотреть онлайн',
			'продажа',
			'классные девчонки',
			'русские невесты',
			'порно с молодыми',
			'скачать',
			'продаем',
			'секс',
			'рецепты',
			'порно',
			'инцест',
			'онлайн казино',
			'телки тут',
			'варез',
			'игра на forex',
			'скачать фильмы'
		);
		if (in_comment_post_like($lower_case_comment, $bad_comment_content)) {
			$comment_box_text = wordwrap(trim($post_comment_content), 80, "\n  ", true);
			$txtdrop = fopen('/var/log/httpd/wp_post-logger/nullamatix.com-text-area_dropped.txt', 'a');
			fwrite($txtdrop, "  --------------\n  [COMMENT] = " . $post_comment_content . "\n  --------------\n");
			fwrite($txtdrop, "  [SOURCE_IP] = " . $_SERVER['REMOTE_ADDR'] . " @ " . date("F j, Y, g:i a") . "\n");
			fwrite($txtdrop, "  [USERAGENT] = " . $_SERVER['HTTP_USER_AGENT'] . "\n");
			fwrite($txtdrop, "  [REFERER  ] = " . $_SERVER['HTTP_REFERER'] . "\n");
			fwrite($txtdrop, "  [FILE_NAME] = " . $_SERVER['SCRIPT_NAME'] . " - [REQ_URI] = " . $_SERVER['REQUEST_URI'] . "\n");
			fwrite($txtdrop, '--------------**********------------------'."\n");
			header("HTTP/1.1 406 Not Acceptable");
			header("Status: 406 Not Acceptable");
			header("Connection: Close");
			wp_die( __('bang bang.') );
		}
	}
}
add_action('init', 'drop_bad_comments');
   Спасибо Вам за добавление этой статьи в:
  • Опубликовать в своем блоге livejournal.com
  • Опубликовать в twitter.com
Категория Wordpress
  

Похожие по тематике посты:
Rotaban.ru - биржа банерной рекламы

7 комментариев к этому посту

  1. Юриус пишет:

    25 января 2010 в 22:06

    А чем Akismet и ReCaptcha для первых постов не подходят? У меня весь спам благополучно отсеялся.

  2. Administrator пишет:

    25 января 2010 в 22:10

    Юриус, данный способ является дополнением к вышеуказанным вами плагинам. Использовать этот способ или нет, сугубо личное дело каждого блогера и не является идеальным или удобным.

  3. crystalbit пишет:

    25 января 2010 в 22:39

    В самой админке в настройках обсуждения «Чёрный список» – имхо то же самое

  4. Administrator пишет:

    25 января 2010 в 23:23

    crystalbit, это тоже, как вариант

  5. So so Def пишет:

    27 марта 2010 в 04:02

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

  6. Administrator пишет:

    28 марта 2010 в 02:24

    So so Def, данный способ всего лишь один из хаков блокирования спама в комментариях, применять его или нет – решать вам. Здесь я описал «сторонний» метод, о существовании которого, возможно, знает не каждый.

  7. Pirat пишет:

    28 августа 2010 в 01:09

    @ Administrator:
    Спасибо за совет. Сегодня опробую. А то у меня завелся спаммер один, так он выудил пост у меня в блоге и в один и тот же пост анекдоты валит хоть ты лопни, а в конце анекдота какую-то рекламу сунет. Не успеваю удалять. и каптчи не помогают ничерта.

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