还是加上了“防止访客冒充博主发表评论”

我一直知道 WordPress 博客下访客是可以冒充博主发表/回复评论的,只要你知道博主的邮箱地址即可,但我一直懒得去加,因为开此博至今2年多几乎没有人在我这冒充博主发表/回复评论。

情人节前夜,不知道万戈是否耐不住寂寞还是为了即将来临的“爱要死”兴奋不己,特意来测试冒充一回(冒充评论可以点这里去围观一下),让我感觉到有点怕怕要是某天不是万戈而是超兴奋的spammer冒充一回不就要删到手软?于是我觉得还是加上这段“防止访客冒充博主发表评论”的代码比较好,防范于未然总是比较好的。

我记得我很早就收藏过这段代码(却不知道哪里出的了,去搜一下,一大把,个个都没说出自哪里……囧~),但是使用效果有点变态:可以防止访客冒充博主了,不过切把已经登陆的博主也禁止了,囧~这就是没有测试直接 Copy 代码的结果。

那么分析代码,原代码结构如下

// 防止访客冒充博主发表评论, 原出处: ? 知道者/原作者请告知一声
function z_user_check($incoming_comment) {
$isSpam = 0;
if ( trim($incoming_comment['comment_author']) == '这里填博主昵称' ) $isSpam = 1;
if ( trim($incoming_comment['comment_author_email']) == '这里填博主邮箱')     $isSpam = 1;
if(!$isSpam) return $incoming_comment;
wp_die('请勿冒充博主发表评论!');
}
global $user_ID;
if(intval($user_ID) == 0) add_filter( 'preprocess_comment', 'z_user_check' );

或许是引用变量 $user_ID 的问题,于是我改为如下,华丽的解决了

// 防止访客冒充博主发表评论, 原出处: ? edit by zwwooooo
function z_user_check($incoming_comment) {
global $user_ID;
$isSpam = 0;
if ( strtolower(trim($incoming_comment['comment_author'])) == '这里填博主昵称' ) $isSpam = 1;
if ( strtolower(trim($incoming_comment['comment_author_email'])) == '这里填博主邮箱') $isSpam = 1;
if (!$isSpam || intval($user_ID) > 0) { return $incoming_comment; } else { wp_die('请勿冒充博主发表评论!'); }
}
add_filter( 'preprocess_comment', 'z_user_check' );

折腾完,隐~

2011.2.17 Update:加入大小写验证。

zww
or
oooo

“还是加上了“防止访客冒充博主发表评论””有198条评论

  1. 这代码犀利啊。。。。

    1. @zwwooooo
      被你折腾之后的 比较给力。

  2. [...] This post was mentioned on Twitter by Weitian Zhao, zwwooooo. zwwooooo said: 『ZWWoOoOo』 还是加上了“防止访客冒充博主发表评论” http://goo.gl/fb/jsbwo [...]

  3. 好代码,收下了。

  4. Mucid says:

    神马原理啊,知道昵称和邮箱难道还不可以冒充?

    1. zwwooooo says:

      @Mucid
      针对自己博客的,你要到其他地方冒充就没办法了

    2. Veezy says:

      @zwwooooo
      扯蛋,Mucid就在这里冒充Veezy,还是可以啊?
      PS:事后请删除这两条留言……

    3. zwwooooo says:

      @Veezy
      你没理解我的意思,意思是你不能冒充博主,这里的博主是我……

    4. zwwooooo says:

      @Mucid
      你没理解我的意思,意思是你不能冒充博主,这里的博主是我……

  5. 老王 says:

    这个在不登录的情况下有效吗?

    1. zwwooooo says:

      @老王
      不登录就是访客了

  6. 这是以前看过,但没加……

    1. zwwooooo says:

      @闪闪的星
      比较早的代码了

  7. Veezy says:

    evernoting,以备后患...

  8. 呵呵..这个应该没什么吧.最多言论攻击而已.哈哈!

  9. A.shun says:

    我这暂时没发现此恶习
    先收藏

    1. zwwooooo says:

      @A.shun
      一般都不会吧,呵呵

  10. 以常用这样的事,这个

    1. zwwooooo says:

      @软件盒子
      常见?应该很少吧

  11. 小闇 says:

    記得winy也有寫過有關這類問題的文章呀:D

    1. zwwooooo says:

      @小闇
      厄,难道出自他那里?

  12. Vicia says:

    如果访客恰好和博主同名,岂不是杯具了?@@

    1. zwwooooo says:

      @Vicia
      去掉这一行

      if ( trim($incoming_comment['comment_author']) == '这里填博主昵称' ) $isSpam = 1;

      邮箱就不用了,难道有人同邮箱? :mrgreen: :mrgreen: :mrgreen:

    2. Vicia says:

      @zwwooooo
      那只要有和博主一样的头像也可以冒充(其实我就是来找茬的,哈哈) :mrgreen:

    3. zwwooooo says:

      @Vicia
      我可以加入黑名单啊,当然你又可以找茬说:换一个邮箱……然后我又……如此这样不断……最后我直接关闭评论!哈哈哈哈

  13. zvv says:

    :twisted: 邪恶

    1. zwwooooo says:

      @zvv
      这是防范不是邪恶吧

  14. Spark says:

    您好,请问 我添加以后 去测试 没有请勿冒充博主发表评论!的提示弹出是怎么回事呢?

    1. zwwooooo says:

      @Spark
      别忘了退出登录再测试

  15. 韩国 says:

    博主提醒的是啊!小心防范一下。

  16. QVOD says:

    :twisted: 小心防范一下。

  17. 有点蓝 says:

    Z大,插楼问一句,怎样能把js代码转成jQuery啊?

    1. zwwooooo says:

      @有点蓝
      这个不知道,哈

  18. mice says:

    T_T 你怎么搬家了..QQ联系不上你了..我去..

    1. zwwooooo says:

      @mice
      被逼搬家……唉,命苦

  19. 访问多的的确需要

    1. zwwooooo says:

      @老大网络
      有攻击迹象的需要吧

  20. gsid says:

    情人节,万戈留下了令人难忘的一笔 :grin:

    1. zwwooooo says:

      @gsid
      哈哈,蛋疼吧

发表评论

昵称 *

网址

B em del U Link Code Quote