WordPress防止评论冒充博主

日期: 标签:WordPress教程 81 条留言
如需帮忙改代码,或者WordPress二次开发、PHP网站建设等需求,可联系我购买付费服务:  点此联系我

     有这样的一个问题,WordPress默认并不会审核评论到底是不是博主发表的,如果有人知道博主的昵称和Email (这是很容易搞到的),那么它使用这个昵称和Email,就可以成功的冒充博主发表评论,进而可能会欺骗其他访客。这对于好多天都不查看自己博客的博主来说,是极其危险的,可能会对你的博客以及你个人的信誉造成很坏的影响;当然如果你一天登陆你的博客N多次,那么这样的问题就不是问题了。下面我教你如何解决这个问题,用文本编辑器打开当前主题目录下的functions.php,将第一个 <?php 替换成以下代码:

<?php
/**
 * 名称: WordPress添加投稿功能
 * 作者:露兜
 * 博客:https://www.ludou.org/
 * 最后修改:2011年02月16日
 */

function ludou_usecheck($incoming_comment) {
    $isSpam = 0;

    // 将以下代码中的 Ludou 改成博主昵称
    if (trim($incoming_comment['comment_author']) == 'Ludou')
        $isSpam = 1;

    // 将以下代码中的 example#ludou.org 改成博主Email
    if (trim($incoming_comment['comment_author_email']) == 'example#ludou.org')
        $isSpam = 1;

    if(!$isSpam)
        return $incoming_comment;

    wp_die('请勿冒充博主发表评论');
}

if(!is_user_logged_in())
	add_filter( 'preprocess_comment', 'ludou_usecheck' );

     更改完毕后用UTF-8编码保存,这样未登录的用户就无法使用博主昵称和Email来发表评论了!当然如果你的博客还有其他的注册用户,那么他们使用的昵称可能会跟博主的昵称相同(如果出现这种情况,博主可以干涉),但是Email是不允许相同的,对于博客的注册用户,管理起来是相当简单的。

     以上代码只是做了一个简单的判断,并不需要读取数据库等操作,也不需要去重载相关的函数,故不会消耗太多的运行时间。以后博主要发表评论的话,请先登录。

     如果你需要更加强大的防垃圾评论的插件,可以是试试:WordPress评论过滤插件 – 大篱

-- 完 --

本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:
原文出处:露兜博客 https://www.ludou.org/wordpress-prevent-imitate-blog-host.html
露兜
kaapass@outlook.com  QQ 825533758

业余编程爱好者,主业是淘宝店主,卖些工艺品,感兴趣可以到我的淘宝店看看(旺旺不提供技术咨询):西西弗sisyphe

81 条留言

点此留言
1 2 108
  1. 申佳明

    很不错啊。马克马克~

  2. hzlzh

    应该写,“冒充管理员?完蛋去吧!”哈哈

  3. LDY

    这个很实用

  4. yesureadmin

    这个方法很好啊

  5. Junan

    哈~幸好我人气不高~~

  6. SteveZheng

    很好的方法呢!学习了

  7. 大刘

    有没有关于评论的hook,在发表之前检查,如果冒充,就不通过?这样就不必改动核心代码了。

  8. Ludou

    @大刘 最近在开发一个类似的插件,近两天会发布。

  9. Ludou

    @大刘 文章中代码已经修改,这样就不必修改源文件了。

  10. huayute

    有错误哦,博主登录后也被阻止了。

  11. Ludou

    @huayute 一时失误,已修正。

  12. 诫子书

    刚刚在网上弄了一个免费空间,安装了wordpress研究。

  13. 葫芦孙

    这个很怕怕

  14. 何苦呢

    这个倒是没有留意

  15. gzcup

    博主的文章写的真好,支持一下,先收藏了。

  16. Houyonglu

    请问只能防止冒充一个管理员吗?我的博客有几个管理员,请问该怎么做啊?

  17. Ludou

    @Houyonglu 多个管理员的话可以将第13行代码改成:
    $admin = array("Ludou", "admin", "abc");
    if (in_array(trim($incoming_comment['comment_author']), $admin))

    其中"Ludou", "admin", "abc"这些是管理员的名称,可自行增减,用引号和逗号括起来并隔开

  18. Houyonglu

    @Ludou 谢谢。我是个初学者,一直都很喜欢看你的文章,每次都能学到很多东西。

  19. 紫色檀香

    @Ludou 你好!我想问下,多用户设置的话 除了修改第13行用户名外,是否也要修改 第17行的用户邮箱添加进去呢?

  20. Ludou

    @紫色檀香 Email主要是提供头像功能,头像对于辨别博主没有太大意义,别人也可以使用你的头像。

  21. 紫色檀香

    @Ludou 谢谢,明白了!
    第9行的这个 ludou_usecheck 我们不需要更改吧?

  22. Ludou

    @紫色檀香 要改就把27行的也改了

  23. 紫色檀香

    @Ludou 谢谢!

  24. 紫色檀香

    @Ludou 顺便再问下,如果需要添加多管理员的话 邮箱代码怎么修改呢?

  25. Ludou

    @紫色檀香 17行改成:
    $adminEmail = array('Ludou@ludou.org', 'admin@ludou.org');
    if(in_array(trim($incoming_comment['comment_author_email']), $adminEmail))

  26. xilou

    <?php 替换成以下代码: 这个 <?php 是哪个地方结束的。 用utf-8编码保存,这个是指 notepad++是在格式里面选utf-8编码然后保存不。。望解答。谢谢

  27. xilou

    @xilou 我自己解决了。能够禁止冒充了。编码还是个问题,只好弄了句英语

  28. 李英杰

    @xilou 直接评论设置黑名单不就好了,我试了 没问题i

  29. Ludou

    @xilou <?php 对应最近的一个 ?>,utf-8编码的保存如你所说。

  30. 清音陋屋

    这个挺有用的,感谢ludou分享!

  31. aaa

    我试试

  32. Ludou

    @aaa 本博未开启此功能。反正都要审核才能显示。

  33. 李英杰

    嗯,我也被这个苦恼了下,不过看了下,评论里面有个黑名单,把博主的名字加进去不就可以了吗

  34. Ludou

    @李英杰 黑名单也会让评论进入数据库,你在后台是可以看到。
    本文介绍的方法直接拒绝将评论存入数据库。

  35. 李英杰

    @Ludou 那不怕akismet,可以自动删除这些的嘛

  36. 疯子的世界

    @李英杰 你也在这 哈哈

  37. 李英杰

    @疯子的世界 哇,不会吧,他乡遇故知,你怎么会忽然转到这里来了,这网络世界也太小了吧

  38. ourelife

    你这个方法我用了,跟我的主题不兼容,提示错误之后整个页面排版都乱掉了!
    我自己又找了个方法,比这个要简洁不少!

  39. 高高

    有没有办法实现每篇文章只允许登录用户评论一次?

  40. 露兜

    @高高 教程:https://www.ludou.org/wordpress-only-allow-comment-once-per-post.html

  41. angel9

    function dmeng_check($username,$usermail){

    echo('name:'.$username.' mail:'.$usermail);die();

    }
    add_action ('register_post' , 'dmeng_check');

    以上代码可以输出用户名,但邮箱无法输出,我想要输出邮箱地址,变量要怎么写?

  42. 四叶草

    大佬 4.7版本添加代码后网站就打不开啦

1 2

发表留言