为WordPress添加评论验证码 – 代码版

WordPress, 转自点点 8 年前 回复

, , ,

为了杜绝垃圾评论,就添加了个验证码,效果非常不错,垃圾评论再也没有来了,方法非常简单,就是在function.php文件里添加个随机码的函数,在comments.php里相应的位置调用即可实现随机验证码,具体代码如下:

// ADD: Anti-spam Code
 function hjyl_antispam(){
	if(!is_user_logged_in()){
		//$pcodes = substr(md5(mt_rand(11111,99999)),0,4);//English+Number
		$pcodes = substr(mt_rand(0,99999),0,4);	//Number	
		$str = '<p id="hjyl_anti">';
		$str .= '<label for="subpcodes">'.__('Anti-spam Code').':</label>';
		$str .= '<input type="text"  size="4" id="subpcodes" name="subpcodes" maxlength="4" />';
		$str .= '<span id="pcodes">'.$pcodes.'</span>';
		$str .= '<input type="hidden" value="'.$pcodes.'" name="pcodes" />';
		$str .= '</p>';
		echo $str;
	}
 }

 function yanzhengma(){
	if ( !is_user_logged_in() ) {
		$pcodes = trim($_POST['pcodes']);
		$subpcodes = trim($_POST['subpcodes']);
		if((($pcodes)!=$subpcodes) || empty($subpcodes)){
			hjyl_comment_err( __('Error: Incorrect Anti-spam Code!') );
		}
	}
}
add_filter('pre_comment_on_post', 'yanzhengma');
add_action('comment_form', 'hjyl_antispam', 1, 1);
// ADD: for error
function hjyl_comment_err($a) { 
    header('HTTP/1.0 500 Internal Server Error');
	header('Content-Type: text/plain;charset=UTF-8');
    echo $a;
    exit;
}

直接扔进functions.php里就可以了;

这也是我的插件hjyl-comment-spam验证码插件的代码版。

支付宝打赏微信打赏

如果此文对你有帮助,欢迎打赏作者。

发表评论

欢迎回来 (打开)

(必填)

9576