2011年02月16日 198条评论

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

我一直知道 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. EIIE says:

    我比较懒...经常不登陆直接回复评论的... :evil:

    1. zwwooooo says:

      @EIIE
      一般情况下不需要。

  2. 毕扬 says:

    我想看看仿冒那个,没看到。。

    1. zwwooooo says:

      @毕扬
      假冒的我改了,而且是有人假冒万戈来假冒我,囧

  3. 无冷 says:

    这个倒是值得一试,山寨的确很可怕

    1. zwwooooo says:

      @无冷
      对啊。。。

  4. Simon says:

    这个对于一些服务性的网站有必要用。。哈哈。。

    我就加了个admin的logo。。偶是admin偶怕谁

    1. zwwooooo says:

      @Simon
      哈哈,其实主要仿制恶作剧

  5. 奚少 says:

    忽然发现登录的博主也被禁止了。。。我来找解决方案的 :twisted:

  6. 奚少 says:

    额,原来我用的已经是最新版本的了。可能是因为我用了隐藏评论者信息导致我输入博主的信息后整个评论者信息全部不见了。。。

  7. 奚少 says:

    估计也不会有人在我那蛋疼的那样玩,还是改天再折腾吧~

    1. zwwooooo says:

      @奚少
      估计你哪里搞错了

  8. 倡萌 says:

    呵呵 好像还没有人冒充我 哈哈

    1. zwwooooo says:

      @倡萌
      正常的人不太会去做这类事。

  9. ZIFANG.NET折腾记录 – 欧阳子方的小小世界 says:

    [...]   【2012.10.13】Mark: 在peascloud的文章里抄袭了如何禁止英文评论 的代码,在zwwooooo的文章里抄袭了防止访客冒充博主发表评论的代码,看大家都在折腾添加评论等级和博主认证,还有neoease.com的小墙代码,先把代码收起来,日后换了好主机再折腾,这主机估计伤不起... [...]

  10. [...] $user_ID 的问题造成管理员也无法发表评论。在网上找到了zwwooooo的文章,引用了其修改好的user [...]

  11. bbis says:

    这个函数解决了手机端WP软件不能回复评论的问题~TKS

  12. iShare says:

    不知道为什么,加了这个还是被人给冒充了 :?:

    1. zwwooooo says:

      @iShare
      人家特意要破你还是可以的。

    2. iShare says:

      @zwwooooo
      我发现用跟我一样的名字不同的邮件地址是可以发表的,一样的邮件地址就不行,不用什么特殊操作,不知道是否跟我昵称和用户名不一样有关

    3. zwwooooo says:

      @iShare
      那你注意一下你的邮箱地址是否正确了,或者直接在代码上写上你的邮箱

    4. iShare says:

      @zwwooooo
      代码里邮箱地址没有写错,我测试过,用我的名字,其他邮箱可以发表,用我管理员邮箱就会被这个阻止。

  13. 小王 says:

    请教一下,如果我想多个昵称不想被冒充,我该怎么做呢?

    1. zwwooooo says:

      @小王

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

      后面继续加

      if ( trim($incoming_comment['comment_author']) == '其他昵称' ) $isSpam = 1;

回复给 无冷 ¬
取消回复

昵称 *

网址

B em del U Link Code Quote