欢迎光临
我们一直在努力

简单的解决word press恶意评论

最近卖小蓝片的太泛滥了,由于用本博客用的是DUX主题默认评论是不带任何保护功能的所以檀烟小筑博客近期不断受其骚扰,不胜其烦,开始了和他们的斗智斗勇,最近终于挡住了他们,看到了胜利的曙光。

WP—ban插件

这个插件简单暴力,就是在黑名单写入评论者的IP,下次访问时直接发给他拒绝访问的页面(这个页面可以自己配置的),但是有个坏处就是如果挂了广告之类的这些机器人并不能产生访客类似的价值,实在是浪费。而且这款插件还有个坏处就是他是被动防御的,只能发现一条恶意IP去记录一条,没被填入黑名单的IP仍然可以评论,相对来说不是很完美。天长日久的对抗中我放弃了这种玩法。寻找其他的出路。最终还是解决了。

WP-ban记录
WP-ban记录

算术验证

其实很多博主喜欢用禁止纯英文评论,但是我的博客有部分外国网友评论所以不能用禁止纯英文评论的办法,所以就给添加了一个算数验证码。而且评论之后不需要再次填写相对方便使用。本文章以DUX为参考,部分代码不同于其他主题会做一个标识,DUX和知更鸟主题的无需修改。下边贴代码

//评论数学验证码
function spam_protection_math(){
//获取两个随机数, 范围0~9
$num1=rand(0,9);
$num2=rand(0,9);
//最终网页中的具体内容
echo
"<input type='text' name='sum' class='math_textfield' placeholder='$num1 + $num2 = '>"
."<input type='hidden' name='num1' value='$num1'>"
."<input type='hidden' name='num2' value='$num2'>";
}
function spam_protection_pre($commentdata){
$sum=$_POST['sum'];//用户提交的计算结果
switch($sum){
//得到正确的计算结果则直接跳出
case $_POST['num1']+$_POST['num2']:break;
//未填写结果时的错误讯息
case null:err('错误: 请输入验证码!');break;
//计算错误时的错误讯息
default:err('错误: 验证码错误,请重新输入!');
}
return $commentdata;
}
if($comment_data['comment_type']==''){
add_filter('preprocess_comment','spam_protection_pre');
}

上边这段代码适用DUX与知更鸟,DUX可以直接粘贴进 functions-theme.php文件最后边,如果是其他主题可以直接粘贴进functions .php文件,其他主题使用这段代码需要将报告信息函数err替换为wp_die,可以直接粘贴下方代码

//评论数学验证码
function spam_protection_math(){
//获取两个随机数, 范围0~9
$num1=rand(0,9);
$num2=rand(0,9);
//最终网页中的具体内容
echo
"<input type='text' name='sum' class='math_textfield' placeholder='$num1 + $num2 = '>"
."<input type='hidden' name='num1' value='$num1'>"
."<input type='hidden' name='num2' value='$num2'>";
}
function spam_protection_pre($commentdata){
$sum=$_POST['sum'];//用户提交的计算结果
switch($sum){
//得到正确的计算结果则直接跳出
case $_POST['num1']+$_POST['num2']:break;
//未填写结果时的错误讯息
case null:wp_die('错误: 请输入验证码!');break;
//计算错误时的错误讯息
default:wp_die('错误: 验证码错误,请重新输入!');
}
return $commentdata;
}
if($comment_data['comment_type']==''){
add_filter('preprocess_comment','spam_protection_pre');
}

然后在comments.php文件75行后边添加如下代码展示效果见文章页尾

<li class="form-inline"><?php echo spam_protection_math(); ?><span class="text-muted">验证码</span></li>
<!--
<?php echo spam_protection_math(); ?>  用来引入验证
li及sapn标签用于符合UI提醒用户,其他主题可自行更换
此处注释请勿复制进comments.php 
-->
验证效果展示
验证效果展示
赞(6) 打赏
未经允许不得转载:编程之路 » 简单的解决word press恶意评论

评论 抢沙发

登录

找回密码

注册