WordPress评论管理界面添加用户IP端口和时间

转载   Young Free  2018-08-24 07:06:59  158 人阅读  40 条评论

前段时间网警叔叔对例行检查博客网络安全情况后,给本博客下达了整改通知书,大概意思就是说,用户的访问记录日志记录得不够全面,最关键是没有记录访客 IP 的端口。为了完成警察叔叔的要求,做到遵守网安的相关法律法规,最终还是决定在WordPress 评论管理页面增加访客的端口号这么个记录。

从整改通知书中看,需要在评论管理界面,增加留评用户 IP 端口一栏,既然要端口号,那就开始干吧。那么要记录和显示 IP 端口,需要怎样一个流程实现呢?

实现思路

  • 问题:记录和显示留评用户 IP 端口
  • 流程:获取 用户 IP 端口号 >> 记录 用户 IP 端口号 >> 显示 用户 IP 端口号

获取用户 IP 端口号

通过度娘,得知,PHP 获取用户 IP 端口号,可以使用如下参数:

  1. $_SERVER['REMOTE_PORT']

记录用户端口号

端口号都拿到了,那记录该怎么办呢?要记录,肯定要动数据库,就是要把这个端口号记录到数据库里。记录到数据库,要么自己新建一张数据表,用来记录用户的评论编号 ID 和 用户的端口。记录评论 ID 是为了方便索引。不过这个太麻烦,我们这种大白菜,自己新建表太不安全了。那另一个方案就是利用现有的数据表,新增内容。现有数据表,相关的有 wp_comment 和 wp_commentmeta 两张表可以用,而 wp_comment 似乎要新增一栏来存储端口,或者在 comment_author_IP 这栏里面追加 IP 端口进去,查找了很多资料,发现,在 comment_author_IP 栏里追加,无法实现。最后,就只剩下捣鼓 wp_commentmeta 这张表了。幸好,大神很多,我们可以得到如下代码来存储我们获得的用户 IP 端口号。

请将这段代码复制粘贴到你的主题 functions.php 文件中,Young Free 比较喜欢放在最末尾 “>” 符号前。(部分主体没有 “>” 符号,自己看着办吧,我也不懂。)

  1. //IP 端口 获取与存储
  2. add_action('wp_insert_comment','wp_insert_ipport',10,2);
  3. function wp_insert_ipport($comment_ID,$commmentdata) {
  4.     $ipport = $_SERVER['REMOTE_PORT'];
  5.     //ipport 是存储在数据库里的字段名字,取出数据的就会用到
  6.     update_comment_meta($comment_ID,'_ipport',$ipport);
  7. }

代码都添加好了,那么,留个评论自己试一下,看看数据库里准确的记录 IP 端口号了没。如果顺利记录到了,你的数据库 wp_commentmeta 表应该如下显示:

WordPress评论管理界面添加用户IP端口和时间 WordPress 第1张

好吧,数据已经正确记录了,那就折腾显示吧。没有这么显示?哦多克,我也不晓得怎么办。检查下代码有没有复制正确吧。

后台显示端口号

这个时候,又要求助万能的度娘了,此处省略 3 个小时调戏度娘并学习 PHP 相关知识的时间。通过度娘得知,使用以下代码可以在评论管理界面增加一栏,用以显示端口。同样,请将代码复制到你主题的 functions.php 文件中。

  1. //后台评论添加 IP 端口栏目
  2. add_filter( 'manage_edit-comments_columns', 'my_comments_columns' );
  3. add_action( 'manage_comments_custom_column', 'output_my_comments_columns', 10, 2 );
  4. function my_comments_columns( $columns ){
  5.     $columns[ '_ipport' ] = __( 'IP Port' );        //IP Port 代表列的名字
  6.     return $columns;
  7. }
  8. function output_my_comments_columns( $column_name$comment_id ){
  9.     switch$column_name ) {
  10.         case "_ipport" :
  11.         echo get_comment_meta( $comment_id, '_ipport', true );
  12.         break;
  13.     }
  14. }

添加完毕,也就差不多完成了。本着科学求是的态度,我们还是要做一下最后的检验,看看后台评论管理界面是不是正确展示了我们亲爱的用户的 IP 端口号。应该如下显示:

WordPress评论管理界面添加用户IP端口和时间 WordPress 第2张

至此,就完成了网安整改要求。接下来就是找网安警察叔叔提交整改回复啦。

美化展示

因为 Young Free 的技术就这白菜样,警察叔叔说 IP 端口已经有了,但是和 IP 地址隔的远,不够直观,需要调整。好吧,继续折腾。通过继续调戏度娘和学习 PHP 相关知识,Young Free 整理了如下代码,同时给追加的栏目添加了 CSS 效果,以更好的显示,不错乱。敬请食用以下代码:

  1. //IP 端口 获取与存储
  2. add_action('wp_insert_comment','wp_insert_ipport',10,2);
  3. function wp_insert_ipport($comment_ID,$commmentdata) {
  4. #   $userip = $_SERVER['HTTP_CLIENT_IP']; //这里获取用户 IP 地址,需要按需修改
  5.     $ipport = $_SERVER['REMOTE_PORT'];
  6.     //ipport 是存储在数据库里的字段名字,取出数据的就会用到
  7. #   update_comment_meta($comment_ID,'_userip',$userip);
  8.     update_comment_meta($comment_ID,'_ipport',$ipport);
  9. }
  10. //为 IP Port 栏目添加 CSS
  11. function ipport_css() {
  12. ?>
  13. <style type="text/css">
  14.     #_ipport { width: 50px; } /* CSS for ipport columns */
  15.     #_userip { width: 50px; } /* CSS for ip columns */
  16.     #author_ip { width: 50px; } /* CSS for ip columns */
  17. </style>
  18. <?php
  19. }
  20. add_action('admin_head', 'ipport_css');
  21. //后台评论添加 IP 端口栏目
  22. add_filter( 'manage_edit-comments_columns', 'my_comments_columns' );
  23. add_action( 'manage_comments_custom_column', 'output_my_comments_columns', 10, 2 );
  24. function my_comments_columns( $columns ){
  25. #   $columns[ '_userip' ] = __( 'User IP' );        //User IP 代表列的名字
  26.     $columns[ 'author_ip' ] = __( 'User IP' );        //User IP 代表列的名字
  27.     $columns[ '_ipport' ] = __( 'IP Port' );        //IP Port 代表列的名字
  28.     return $columns;
  29. }
  30. function output_my_comments_columns( $column_name$comment_id ){
  31.     switch$column_name ) {
  32.         case "author_ip" :
  33.         echo get_comment_author_IP( $comment_id, 'author_ip', true );
  34.         break;
  35. #       case "_userip" :
  36. #       echo get_comment_meta( $comment_id, '_userip', true );
  37. #       break;
  38.         case "_ipport" :
  39.         echo get_comment_meta( $comment_id, '_ipport', true );
  40.         break;
  41.     }
  42. }

说明一下:这段代码中,把 IP 也显示在 IP 端口前,给出了 2 种可行的办法,请自行选择修改。其中,被注释掉的一段

  1. $userip = $_SERVER['HTTP_CLIENT_IP'];

这句用来获取用户的 IP,这里给出的是,获取用户浏览器客户端的 IP 地址,如果用户使用了代理,或者,你用了 CDN,或者,用户是局域网,哦豁,这里就不起作用了,无法获取用户的真实 IP。但是还可以用如下代码替换

  1. $_SERVER["REMOTE_ADDR"//取得客户端的 IP 地址;
  2. $_SERVER["HTTP_X_FORWARDED_FOR"//通过代理服务器取得客户端的真实 IP 地址;
  3. $_SERVER["HTTP_CLIENT_IP"//获取客户端,及浏览器所在的电脑的 ip 地址

建议直接食用,不要挑食,以免出问题。直接食用,效果应该如下:(不是这样?Oh boy, 我也不知道咋办,去调戏度娘吧,或者,留个评论试试?)

WordPress评论管理界面添加用户IP端口和时间 WordPress 第3张

插件下载

如果不想折腾代码,那么可以直接下载插件启用后即可使用。声明下,由于初次制作插件,不晓得怎么把下面三个大佬的链接加进去,所以只能在博客里再次表示感谢大佬们分享的代码。

特别感谢

本文,大量通过度娘学习和了解 PHP 相关内容,特别感谢以下三篇博客:

历史上的今天:

如何免费领取阿里云1000元代金券?
文章标签: ,   ,   ,  
原文地址:https://www.youngfree.cn/seo/2214.html
温馨提示:文章内容仅代表作者个人观点,不代表boke112导航赞同其观点和对其真实性负责!
版权声明:本文为转载文章,来源于 Young Free ,版权归原作者所有,欢迎分享本文,转载请保留出处!
转载砖家

相关文章 分类热门分类热评最新问答

 发表评论

中国赞表情摊手表情吃瓜表情笑哭表情偷笑表情衰表情汗表情思考表情费解表情抓狂表情晕表情流泪表情疑问表情嘻嘻表情吃惊表情鼓掌表情

  1. X隐者免费赚钱
    X隐者免费赚钱 @回复

    这个……现在这么严格了吗

  2. Charles
    Charles @回复

    所以,我的站点选择了国外。gcp,aws等溜了一圈,还是vultr性价比高。

    • 懿古今
      懿古今2018-08-26 10:54  回复

      @Charles国外的主机相对自由很多,但是就是无法使用国内的很多产品,有得有失,只能自己衡量选择了

  3. 土蜂蜜百科网
    土蜂蜜百科网 @回复

    厉害厉害,这个可以有

  4. 沈唁志
    沈唁志 @回复

    随机几个端口出来~

  5. 杨景文
    杨景文 @回复

    感谢大佬转载,受宠若惊。

    • 懿古今
      懿古今2018-08-25 09:55  回复

      @杨景文[嘻嘻] 你应该是第一个遇到这个问题并提出解决办法的站长,应该是我们大家多些你的无私分享,让我们懂得如何添加IP和端口号,以防以后被盯上。PS:昨天发布的时候忘记勾选“转载文章”类型,所以没有显示文章的原作者和原链接,幸好有用户“初远”提醒告知,要不然我都还不知道了,真的不好意思。

  6. 青山
    青山 @回复

    我申请的非交互式,不用太麻烦~

  7. 初远
    初远 @回复

    转载杨景文博客的文章,也没留原作者和地址啊

    • 懿古今
      懿古今2018-08-25 09:06  回复

      @初远[中国赞] 谢谢告知,你不说我还真没留意到这个,因为我在后台添加好转载作者和转载地址,竟然忘记勾选转载文章类型了,再次感谢告知。

  8. 久伴博客
    久伴博客 @回复

    感谢博主分享,学习了

  9. 蒲公英
    蒲公英 @回复

    优秀,前几天还在群里讨论,才几天解决方案可做出来了~

    • 懿古今
      懿古今2018-08-25 09:09  回复

      @蒲公英[嘻嘻] 这个文章很早以前文章作者就发布了,他应该是第一个遇到这种要求的站长

  10. 千眼科技网
    千眼科技网 @回复

    公安备案的时候好像有这个,但是一直都没查过。

  11. 闲鱼
    闲鱼 @回复

    [偷笑] 我们是同一个地方不同命,我就没收到

    • 杨景文
      杨景文2018-08-25 09:53  回复

      @闲鱼现在武陵区博客也可以直接 非交互式备案了,孟坤大佬的就是 非交互式,还是警察叔叔让他直接选的非交互式。

      • 闲鱼
        闲鱼2018-08-25 12:05  回复

        @杨景文我是网上申请的交互式就直接给通过了,警察叔叔都没喊我 [笑哭]

  12. 80后记忆
    80后记忆 @回复

    网安还有这要求,真是不同地方不一样。我当时备案也是,很多地方网上提交就可以了,我这还要当面提交材料。

  13. 笛声
    笛声 @回复

    一个随机端口也要记录?意义在哪?

  14. nice
    nice @回复

    要是我可能就要关站了,,,

  15. 清秋暖冬
    清秋暖冬 @回复

    现在guan的好严啊。。。。

  16. 里维斯社
    里维斯社 @回复

    网警蜀黍现在变得这么勤奋了呢

  17. 银色月航
    银色月航 @回复

    折腾人,尼玛。
    一个博客也这样,又不是大V啊。

  18. 区块链
    区块链 @回复

    [嘻嘻] 好像挺不错的功能。

  19. Mr.ChengPing
    Mr.ChengPing @回复

    撒时候也要求有这个了?

  20. 雅兮网
    雅兮网 @回复

    我靠 这尼玛都要。简直醉了

  21. 梦幻
    梦幻 @回复

    博主的博客速度怎么那么快

    • 懿古今
      懿古今2018-08-24 11:28  回复

      @梦幻可以学习本站分享的网站优化相关文章,比如安装缓存插件,使用CDN等

  22. 手机兼职
    手机兼职 @回复

    感觉用处不大

  23. 靠谱学生兼职网
    靠谱学生兼职网 @回复

    有空也多写写ZB的可否?只是希望

  24. 明月登楼
    明月登楼 @回复

    这个警察在逗你呢!闲的蛋疼了这是!

  25. 轻羽
    轻羽 @回复

    如果不是需要的话我一点也不想加