用代码实现wordpress评论留言,wordpress数字验证,过滤垃圾评论

我这边提供两种方法。
也是比较简单的方法。
虽然有些人是透过修改外挂的方式,达到不靠外挂,也有亮丽的验证方式。
但常常无法适用于普遍主题。
而现在wordpress主题太多了,用通用的代码,比较可以简单实现功能。
这边我提供两种方式。
第一种方式「自动生成4位数字」
开启主题的function.php加入以下代码
  1. // ADD: Anti-spam Code
  2. //自动生成4位数字
  3. function olo_antispam(){
  4. if(!is_user_logged_in()){
  5. //$pcodes = substr(md5(mt_rand(0,99999)),0,4); //验证码为英文+数位组合
  6. $pcodes = substr(mt_rand(0,99999),0,4); //验证码为数位组合
  7. $str = 'class="olo_anti"XXXX/liXXXliXXXXXXXXXXXXXlabel for="subpcodes"XXXXXXXXXXXXXXXXXXXXspan class="number"XXX/spanXXXXXXXXXXXXXXXXXXXXXXXX/labelXXXX/liXXXli class="alt"XXXXXXXXXXXXXinput type="text" size="4" id="subpcodes" name="subpcodes" /XXXX/liXXXliXXXXXXXXXXXXXspan class="pcodes"XXXXXXXXXXXXX/spanXXXX/liXXXli class="alt"XXXXXXXXXXXXXinput type="hidden" value="'.$pcodes.'" name="pcodes" />';
  8. $str .= '

    ';
  9. echo $str;
  10. }
  11. }
  12. add_action('comment_form', 'olo_antispam', 11);
  13. function yanzhengma(){
  14. if ( !is_user_logged_in() ) {
  15. $pcodes = trim($_POST['pcodes']);
  16. $subpcodes = trim($_POST['subpcodes']);
  17. if((($pcodes)!=$subpcodes) || empty($subpcodes)){
  18. wp_die( __('错误!请输入正确的验证码') );
  19. }
  20. }
  21. }
  22. add_filter('pre_comment_on_post', 'yanzhengma');
 
第二种方法「数字加法验证法」
开启主题的function.php加入以下代码
 
  1. //数字加法验证法
  2. add_action('comment_form', 'spam_protection_math', 11);
  3. function spam_protection_math(){
  4. //随便取得两个乱数, 范围0~9
  5. $num1=rand(0,9);
  6. $num2=rand(0,9);
  7. //从网页中的具体内容
  8. echo " $num1 + $num2 = ?"
  9. .""
  10. .""
  11. ." 验证码

    "
    ;
  12. }
  13. function spam_protection_pre($commentdata){
  14. $sum=$_POST['sum'];//访客提交的计算结果
  15. switch($sum){
  16. //得到正确的计算结果则直接跳出
  17. case $_POST['num1']+$_POST['num2']:break;
  18. //未填写结果时的错误讯息
  19. case null:wp_die('错误: 没有输入验证码,请再验证码.');break;
  20. //计算错误时的错误讯息
  21. default:wp_die('错误: 验证码错误,请输入正确的验证码.');
  22. }
  23. return $commentdata;
  24. }
  25. if($comment_data['comment_type']==''){
  26. add_filter('pre_comment_on_post','spam_protection_pre');
  27. }

评论 (0)

此处尚未发表评论

留言

  1. 以游客身份发表评论。注册登入到您的帐户。
附件 (0/ 3)
分享您的位置