东风不来
三月的柳絮不飞

DUX 主题添加评论加法算术验证码 纯代码实现

前一阵博主想给自己的主题新增一个“评论验证”的功能,主要是为了防止一些机器人和垃圾评论,网上流传最多的一个是使用 myQaptcha 这个插件,这个插件作用是提交评论时必须通过手工滑动解锁,不过博主测试了一下,原装的 myQaptcha 插件貌似不是很兼容 DUX 主题。

后来博主又试了一下 知更鸟主题 作者修改的一个 myQaptcha 插件,用是可以用,但是在 DUX 主题上真的奇丑无比,可能鸟叔只是针对知更鸟部分进行了美化吧!当然,如果你用的是 Begin 主题又不喜欢折腾的话,强烈推荐使用 myQaptcha 修改版!

myQaptcha 修改版下载地址:

链接: https://pan.baidu.com/s/1ZvdaqQLdEQiRNM-tznXhqg       提取码: vuki

当然使用 DUX 主题的小伙伴,也可以使用,只是样式真的不是很好看。。。不喜欢折腾的小伙伴看到这里就可以了!

评论加法算术验证码 代码版

这个代码的话也是来自于网上,写的还不错中规中矩,直接将下面的代码复制到 functions.php 中

//评论数学验证码
function spam_protection_math(){
//获取两个随机数, 范围0~9
$num1=rand(0,9);
$num2=rand(0,9);
//最终网页中的具体内容
echo "<span class='yanzheng'> $num1 + $num2 = "
."<input type='text' name='sum' class='math_textfield' value=''>"
."<input type='hidden' name='num1' value='$num1'>"
."<input type='hidden' name='num2' value='$num2'></span>";
}
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');
}

这里需要说明一下的地方就是,如果你是用的 DUX 主题,建议 wp_die() 函数修改为 err()

调用

在你的主题 comments.php 在适当位置添加下面代码进行调用:

<?php echo spam_protection_math(); ?>

到此教程结束,当然这里还需要自己折腾的地方还有一个就是 css 样式,这里博主就不限制大家的思想,尽情的折腾吧!

赞(7) 打赏
未经允许不得转载:文字咖 » DUX 主题添加评论加法算术验证码
分享到:

评论 5

5 + 3 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #3

    如果我是DJ你会爱我吗?哈哈

    蜗牛资源网 2个月前 (05-21) 这家伙可能用了美佬的代理 QQ浏览器  Android 9 ONEPLUS A5000 Build/PKQ1.180716.001 回复
  2. #2
    Baby Zhou

    很喜欢博主的文章,加油

    Baby Zhou 3个月前 (04-19) 来自天朝的朋友 谷歌浏览器 Windows 8.1 回复
  3. #1

    作者输入也需要输验证码吗?还有就是结果框长短怎么控制?

    VPS驿站 3个月前 (04-09) 来自天朝的朋友 火狐浏览器 Windows 10 回复
    • Wonder Zhou

      @VPS驿站 因为这个没有设置身份验证这块的代码,所以所有人评论都需要输入验证码,当然你也可以设置一个判断 if(!isset($_COOKIE[‘comment_author_email_’.COOKIEHASH]))

      Wonder Zhou 3个月前 (04-09) 来自天朝的朋友 谷歌浏览器 Windows 10 回复

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏