首页 » PHP » 正文

wordpress给文章评论添加验证码

效果图如下,也就是本站的评论区效果:

wordpress给文章评论添加验证码

1、首先修改的是模板目录下的comments.php文件,不同的模板可能差距比较大,以本博客使用的这个模板为例。首先生成两个随机数,比如:

$num1=rand(0,9);
$num2=rand(0,9);

2、其次是增加html部分,我用的模板是把表单部分写成了一个数组,增加一个数组项vcode,设置两个hidden域赋值为上边生成的随机数。

'vcode' =>
	'<div class="comment-form-author form-group has-feedback">'.
	'<div class="input-group">'.
	'<div class="input-group-addon"><i class="fa fa-star"></i></div>'.
	'<input class="form-control" placeholder="请输入答案:'.$num1.'+'.$num2.'=?" id="vcode" name="vcode" type="text" value="' . esc_attr( $commenter['comment_author_vcode'] ) .
	'" size="30"' . $aria_req .
	( $req ? ' required /><span class="form-control-feedback required">*</span>' : ' />' ) .
	'</span><input type="hidden" name="num1" value="'.$num1.'"><input type="hidden" name="num2" value="'.$num2.'"></div></div>'
			

3、修改functions.php文件,找到提交评论的函数,接收两个隐藏域里的两个随机数,跟用户输入的结果对比即可:

    $comment_vcode      = ( isset($_POST['vcode']) ) ? trim($_POST['vcode']) : null;//接收用户输入
    $comment_num1      = ( isset($_POST['num1']) ) ? trim($_POST['num1']) : null;//接收随机数1
    $comment_num2      = ( isset($_POST['num2']) ) ? trim($_POST['num2']) : null;//接收随机数2
	//新增,判断验证码数字是否正确
	if ($comment_num1+$comment_num2!=$comment_vcode) {
		ajax_comment_err('哎呀,验证码算错了');
		exit;
	}

这种验证方式很简单,抵挡垃圾评论机器人应该足够了,需要修改的内容也不多,只是不同模板,可能多少有点出入。

博主的文章或程序如果给您带来了价值,感谢您打赏一二
微信扫码支付 支付宝扫码支付

发表评论