直接拒绝wordpress黑名单评论的发表

其实伦家不想这么快就发新文章的, 把美丽动人的玉照都顶下去了.
大家知道wordpress黑名单的评论会被自动标记为垃圾评论, 这个做法我感觉挺浪费资源的, 毕竟垃圾评论还是写入了数据库, 如果集中时间段被大量spam攻击, 这种黑名单机制对保护数据库无济于事,
然后我写了个函数, 效果是直接拒绝符合黑名单条件的评论发表, 评论不会写入数据库

方法A : 以下代码扔到functions.php

function xhd_fuckspam($comment) {
    if(  is_user_logged_in()){ return $comment;} //登录用户无压力...
   
    if( wp_blacklist_check($comment['comment_author'],$comment['comment_author_email'],$comment['comment_author_url'], $comment['comment_content'], $comment['comment_author_IP'], $comment['comment_agent'] )){
        header("Content-type: text/html; charset=utf-8");
        exit('草你麻痹垃圾评论滚粗');
    }  else  {
        return $comment; 
    }
} 
add_filter('preprocess_comment', 'xhd_fuckspam');

方法B : 以下代码扔到comments-ajax.php (随便找个地方,比如检查评论太快那段函数后面)

 if( wp_blacklist_check($comment_author,$comment_author_email,$comment_author_url, $comment_content )&&!is_user_logged_in()){//登录用户还是无压力...
        err(__('草你麻痹垃圾评论滚粗'));   
    }

两个方法效果和原理略有不同,

  • 方法A:click submit→POST出去→收到拒绝信息 exit→return→ 会清空评论框内容并重置提交时间间隔 == submit了一次
    优点: 杀毒彻底

  • 方法B:click submit→POST被拒绝→return→ 会保留评论框内容 == 没有submit过
    优点:
    1. 评论者省时省力, 我是用此法来拒绝纯英文评论的, 因为此类误判几率大, 省得好人们重新再评论一次了;
    2. 由于没有POST出去, 所以相对而言对数据库压力最小;

    缺点: 由于comments-ajax是从表单内直接提取$_POST的的字段,所以无法匹配IP和agent类黑名单

效果图:
fuck-spam

可以自行测试, 方法: 把你在这里评论时的昵称改成带bags或者louis的, (这些都已经in_array在小蝴蝶黑名单了) 然后提交评论, 剩下来的你们就自己感受吧

LIKE OR SHARE IT:

admin发表于Code目录下,标签为,转载请保留链接

TOP DOWN
发表评论

您必须 [ 登录 ] 才能发表留言!

  1. 沙 发 灰狼

    测试评论~~

    五月 7, 2013 12:30:46
  2. 板 凳 灰狼

    没想到我居然可以抢了沙发???

    五月 7, 2013 12:31:03
  3. 地 板 灰狼

    地板全部搞定~~~

    五月 7, 2013 12:31:22
  4. 地 毯 灰狼

    地下室都包揽

    五月 7, 2013 12:33:20
  5. 地 面 不亦乐乎

    测试了一下,没事自己找骂。。。

    五月 7, 2013 13:38:12
  6. 地 下 SEO博客

    这个决定实用。。。每天都有大量垃圾软件发的留言。。丢进垃圾桶里。下次还来。我还得丢。。有了这个我下次就不用丢了。

    五月 7, 2013 14:57:35
  7. 7 楼 airoschou

    直接把一些特黑的挂到我的vps里屏蔽了

    五月 7, 2013 15:34:10
  8. 8 楼 木本无心

    我试下了。我擦,找骂么自己。。。

    五月 7, 2013 16:21:45
  9. 9 楼 大发

    黑粗

    五月 7, 2013 16:29:11
  10. 10 楼 公子

    颤抖的试试。。。

    五月 7, 2013 18:14:16
  11. 11 楼 ChoJemmy

    元老级博友 路易斯.韩 躺着中枪,难怪没看到他在你这留言,原来被滚粗了。

    我是多么希望被spam攻击啊,我是我么希望有人爆站啊。可惜没有。

    每次看到谁说又被黑了,垃圾评论上万了。我就想,怎么我从来没遇到过?

    五月 7, 2013 19:26:47
  12. 12 楼 xyixyixyi

    这这这·你叫我情何以堪,ma自己 不行。-.* 我已经找到另个方法了,就是每天自动删除垃圾评论。

    五月 7, 2013 19:45:43
  13. 13 楼 予沐

    …为啥我要试一下呢?

    五月 7, 2013 22:02:04
  14. 14 楼 跑调的包子

    自动过滤代码,跳转到评论框。 Send ===> Status: Success!

    五月 7, 2013 22:02:49
  15. 15 楼 yxiao

    这脏话哪学的。

    五月 7, 2013 22:23:25
  16. 16 楼 OYOY

    这个方法好!真好!

    五月 7, 2013 22:54:03
  17. 17 楼 郑永

    这个反过来骂的脏话够粗,女人是最大受害者。

    五月 7, 2013 23:57:47
  18. 18 楼 这样

    这个主机快还是主题快?翻页刷的一下。。。

    五月 8, 2013 06:20:04
  19. 19 楼 Lucius

    移动设备浏览,文中插图溢出边框。

    五月 8, 2013 07:29:35
  20. 20 楼 空空裤兜

    我是直接开插件的,英文垃圾评论确实该滚粗

    五月 8, 2013 08:33:18
  21. 21 楼 Android

    草你麻痹的垃圾评论!!我靠 我那223条!

    五月 8, 2013 12:52:06
  22. 22 楼 蛋疼哥

    貌似不错

    五月 8, 2013 13:40:12
  23. 23 楼 619影视

    家里网线终于通了

    五月 8, 2013 22:22:05
  24. 24 楼 啄木游弋

    这个方法A是直接提取wordpress后台垃圾评论审核框框里咱们手动填进去的那些信息作为判断依据?我的句子长了点,你能明白我意思吧?方法简直棒极了,俺得学习一下

    五月 10, 2013 09:33:40
  25. 25 楼 杨祖江

    呵呵,主要是机器人,骂了也没有用呀

    五月 16, 2013 23:11:52
  26. 26 楼 麦田一根葱

    functions.php里的exit(‘草你麻痹垃圾评论滚粗’); 还是写为 err(__(‘草你麻痹垃圾评论滚粗’)); 好

    五月 19, 2013 18:42:35
  27. 27 楼 飞天舞

    大神,有机会研究下typecho,也出点这样的教程吧。
    看着这么多好东西,不懂怎么往typecho搬,真的好痛苦的~~

    六月 3, 2013 20:31:31
  28. 28 楼 百雀羚适合年龄

    博主呀,一个最困苦、最卑贱、最为命运所屈辱的人,只要还抱有希望,便无所怨惧。摘自:有关读书的名言

    七月 7, 2013 11:33:17
  29. 29 楼 kn007

    我那边根据习惯自制AI。。。貌似效果还不错,很少遇到垃圾评论,以前1天上百条,头疼。。

    七月 21, 2013 19:36:49
  30. 30 楼 SEO博客

    如果把垃圾评论清空以后是不是就不能判断以前的垃圾了。还是垃圾评论里面始终要留着那些垃圾评论这个判断才有效果。

    八月 10, 2013 15:03:06
  31. 31 楼 vfhky

    挺清新的一个博客,很赞!

    九月 22, 2013 21:40:24
  32. 32 楼 敏敏

    以前本敏的某个东西(WP非博客)用到过,方案和你的2类似,只是代码没你弄得好(登录用户没排除)…

    十月 8, 2013 03:26:20
  33. 33 楼 静心

    您好,我使用的方法A,可以很好过滤关键词黑名单,但好像对ip黑名单无效,黑名单ip不能被exit”…”,请问怎么回事啊?

    一月 4, 2014 16:11:32
  34. 34 楼 静心

    已经可以了,谢谢。增加了两行:
    $comment['comment_author_IP'] = preg_replace( ‘/[^0-9a-fA-F:., ]/’, ”,$_SERVER['REMOTE_ADDR'] );
    $comment['comment_agent'] = isset($_SERVER['HTTP_USER_AGENT'] ) ? substr($_SERVER['HTTP_USER_AGENT'], 0, 254 ) : ”;

    一月 4, 2014 22:19:08
  35. 35 楼 不认识

    话说,这是个好东西。。。

    三月 13, 2014 10:07:44
  36. 36 楼 囧小样

    赞一个

    三月 26, 2014 18:46:26