彻底解决WordPress博客垃圾评论的问题

新浪微博 QQ空间 腾讯微博

本来这里很少有评论,但是来自日语或者英语的垃圾评论却非常多,可以用wordpress自带的过滤功能禁止其中的完全英语的垃圾评论,但是没有办法禁止日语的,甚至其他各种语言的,在网络上面发现有人使用计算加法作校验的方式来屏蔽来解决。因为垃圾评论都是用“机器人”发出的,他们不可能去分析评论的额外接口。利用wordpress提供的comments的两个回调即可实现。

在网上下载了插件的代码,稍作了修改。

修改步骤:

1、将如下文件解压缩后放到wordpress的如下目录中:$wordpress-root-path\wp-content\plugins,形成$wordpress-root-path\wp-content\plugin\comment_capatcha.php的目录结构。粗体部分替换成你的wordpress安装的根目录。这个过程实际上相当于安装了一个新的插件。

下载链接:http://codefine.co/wp-content/uploads/2013/08/comment_capatcha.zip

这里也把代码贴出来:

<?php

/*
Plugin Name: 简单算术题评论验证码插件
Plugin URI: http://www.utubon.com/wordpress-plugin-comment-capatcha-figure/
Description: 提交评论之前必须写出简单的算术题答案
Version: 1.0
Author: 否子戈
Author URI: http://www.utubon.com
*/

if(!class_exists('comment_capatcha')) {
class comment_capatcha {
function __construct() {
add_action('comment_form', array(& $this, 'print_capatcha'));
add_filter('preprocess_comment', array(& $this, 'preprocess_comment'));
}
function print_capatcha() {
if(!is_user_logged_in()) {
global $post;
session_start();
$rand_1 = mt_rand(1,6);
$rand_2 = mt_rand(1,6);
$_SESSION['capatcha_'.$post->ID] = $rand_1 + $rand_2;

$str = '<div id="capatcha-area"><label>';
$str .= "{$rand_1} + {$rand_2} = ".'<input type="text" size="2" name="capatcha" id="capatcha" />';
$str .= 'Result<span class="required">*</span>';
$str .= '</label></div>';
$str .= '<br>';
echo $str;
}
}
function preprocess_comment($commentdata) {
if(!is_user_logged_in()) {
session_start();
$post_id = isset($_POST['comment_post_ID']) ? $_POST['comment_post_ID'] : 0;
if(!$post_id){
wp_die('数据来源非法。');
}
$capatcha = $_SESSION['capatcha_'.$post_id];
if($capatcha != $_POST['capatcha']){
wp_die( __('请返回后重新输入算数题答案!') );
}
unset($_SESSION['capatcha_'.$post_id]);
}
return $commentdata;
}
}

}

if( !isset($comment_capatcha) ) {
$comment_capatcha =& new comment_capatcha();
}

?>

2、修改算术计算行所放的位置

我的主题默认是放在提交按钮之上,评论内容之后,可以移动到评论内容之前,作如下修改即可:(图片较小,点击后可以在新窗口查看大图)

compare

移动doaction函数的调用点即可修改算术框的位置。

3、到插件管理页面开启插件:简单算术题评论验证码插件

本站修改实现之后的效果为:

modify_posting_commeont

新浪微博 QQ空间 腾讯微博

| 1 分2 分3 分4 分5 分 (5.00- 2票)
Loading ... Loading ... | 这篇文章归档在:建站技术
| 标签: , . | 永久链接:链接 | 评论(6) |

6 条评论

  1. 89
    评论于 七月 1, 2017 at 12:55:46 CST | 评论链接
    if a=b return 0;
    

     

  2. guest
    评论于 八月 5, 2013 at 23:17:05 CST | 评论链接

    你就慢慢测吧,别测出”致命“级别的单就行啊。

  3. niuliqiang
    评论于 八月 5, 2013 at 23:14:50 CST | 评论链接

    name 和 Email 竟然还在。。。 题目也是我刚刚算的。。

  4. niuliqiang
    评论于 八月 5, 2013 at 23:11:42 CST | 评论链接

    这次是关了浏览器重新登录的,不要再给我算错误了。。。。

  5. guest
    评论于 八月 5, 2013 at 22:59:14 CST | 评论链接

    是的啊,注册用户当然可以不用做题。机器人应该不会自动注册用户的。

  6. nlqlove
    评论于 八月 5, 2013 at 22:25:29 CST | 评论链接

    呵呵,看起来不错,但是我是注册用户好像不用做小学题也能提交哦

评论

邮箱地址不会被泄露, 标记为 * 的项目必填。

8 - 2 = *



You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <img alt="" src="" class=""> <pre class=""> <q cite=""> <s> <strike> <strong>

返回顶部