[野生技术]已审核的评论不显示验证码(beta)|千与琥珀的河川

[野生技术]已审核的评论不显示验证码(beta)

千与琥珀

注意事项:

1:代码仅在本地测试通过,不保证所有主题下都能使用,所有代码仅供学习参考用 2.本代码是专为ccloli.com设计。 3.这个坑只管挖,不管填!!! 起因:【传送门】和cc妹(zheng)纸(tai)的请求

不罗嗦了,直接上代码(p.s:感谢露兜西米的部分源码) 仓库地址:https://github.com/huhaku/wordpress_comment_is_stranger
function spam_commens(){ $isstranger = 0; if( urldecode($_COOKIE["comment_author_email_" . COOKIEHASH])!=''); //要验证的Email地址,通过cookie取得(已经提交过评论的才有cookie的说) $email =urldecode($_COOKIE["comment_author_email_" . COOKIEHASH]); else $email =nome@xxoo.com; //头像判断功能(来自露兜) $hash = md5(strtolower(trim($email))); $uri = 'http://www.gravatar.com/avatar/'. $hash .'?d=404'; $headers = @get_headers($uri); if (!preg_match("|200|", $headers[0])) $isstranger = '1'; //查询是否已经通过审核(话说我记得wordpress有内置函数什么的,晕完了) $con = mysql_connect("localhost","root","");//这里改成你自己的数据库地址 if (!mysql_query('select * from wp_comments where comment_author_email ="$email" and comment_approved = "1"',$con)) $isstranger = '1'; return $isstranger; } function spam_protection_math(){ //获取两个随机数, 范围0~9 $num1=rand(0,9); $num2=rand(0,9); //最终网页中的具体内容 echo"<div class='row'>" ."$num1 + $num2 = <input type='text' name='sum' class='math_textfield' value='' tabindex='1'>" ."<input type='hidden' name='num1' value='$num1'>" ."<input type='hidden' name='num2' value='$num2'>" ."<label for='math' class='small'> Verification code</label>" ."</div>"; } function spam_protection_pre($commentdata){ $sum=$_POST['sum'];//用户提交的计算结果 switch($sum){ //得到正确的计算结果则直接跳出 case $_POST['num1']+$_POST['num2']:break; //未填写结果时的错误讯息 case null:err('Error: please type the verification code.');break; //计算错误时的错误讯息 default:err('Error: The verification code is error, please try again.'); } return $commentdata; } if(!is_user_logged_in() || $comment_data['comment_type']=='' && !spam_commens()){ add_filter('preprocess_comment','spam_protection_pre'); }
然后在comments.php适当的地方添加<?php if(!spam_commens())spam_protection_math();?>代码,和在style.css里面添加css
input.math_textfield{background-color:#FFF;border:1px solid #CCC;font-size:120%;font-family:Tahoma,Verdana,"BitStream vera Sans",Arial,Helvetica,Sans-serif;padding:2px 1px}
#respond{font-size:90%;padding:15px 5px 0}
#respond .row{margin-bottom:5px}
#respond .math_textfield{width:180px;}
具体实现大概就是介样,赶紧滚床去,累死喵了。

login……