前段时间网警叔叔对例行检查博客网络安全情况后,给本博客下达了整改通知书,大概意思就是说,用户的访问记录日志记录得不够全面,最关键是没有记录访客 IP 的端口。为了完成警察叔叔的要求,做到遵守网安的相关法律法规,最终还是决定在WordPress 评论管理页面增加访客的端口号这么个记录。
从整改通知书中看,需要在评论管理界面,增加留评用户 IP 端口一栏,既然要端口号,那就开始干吧。那么要记录和显示 IP 端口,需要怎样一个流程实现呢?
实现思路
- 问题:记录和显示留评用户 IP 端口
- 流程:获取 用户 IP 端口号 >> 记录 用户 IP 端口号 >> 显示 用户 IP 端口号
获取用户 IP 端口号
通过度娘,得知,PHP 获取用户 IP 端口号,可以使用如下参数:
- $_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 比较喜欢放在最末尾 “>” 符号前。(部分主体没有 “>” 符号,自己看着办吧,我也不懂。)
- //IP 端口 获取与存储
- add_action('wp_insert_comment','wp_insert_ipport',10,2);
- function wp_insert_ipport($comment_ID,$commmentdata) {
- $ipport = $_SERVER['REMOTE_PORT'];
- //ipport 是存储在数据库里的字段名字,取出数据的就会用到
- update_comment_meta($comment_ID,'_ipport',$ipport);
- }
代码都添加好了,那么,留个评论自己试一下,看看数据库里准确的记录 IP 端口号了没。如果顺利记录到了,你的数据库 wp_commentmeta 表应该如下显示:
好吧,数据已经正确记录了,那就折腾显示吧。没有这么显示?哦多克,我也不晓得怎么办。检查下代码有没有复制正确吧。
后台显示端口号
这个时候,又要求助万能的度娘了,此处省略 3 个小时调戏度娘并学习 PHP 相关知识的时间。通过度娘得知,使用以下代码可以在评论管理界面增加一栏,用以显示端口。同样,请将代码复制到你主题的 functions.php 文件中。
- //后台评论添加 IP 端口栏目
- add_filter( 'manage_edit-comments_columns', 'my_comments_columns' );
- add_action( 'manage_comments_custom_column', 'output_my_comments_columns', 10, 2 );
- function my_comments_columns( $columns ){
- $columns[ '_ipport' ] = __( 'IP Port' ); //IP Port 代表列的名字
- return $columns;
- }
- function output_my_comments_columns( $column_name, $comment_id ){
- switch( $column_name ) {
- case "_ipport" :
- echo get_comment_meta( $comment_id, '_ipport', true );
- break;
- }
- }
添加完毕,也就差不多完成了。本着科学求是的态度,我们还是要做一下最后的检验,看看后台评论管理界面是不是正确展示了我们亲爱的用户的 IP 端口号。应该如下显示:
至此,就完成了网安整改要求。接下来就是找网安警察叔叔提交整改回复啦。
美化展示
因为 Young Free 的技术就这白菜样,警察叔叔说 IP 端口已经有了,但是和 IP 地址隔的远,不够直观,需要调整。好吧,继续折腾。通过继续调戏度娘和学习 PHP 相关知识,Young Free 整理了如下代码,同时给追加的栏目添加了 CSS 效果,以更好的显示,不错乱。敬请食用以下代码:
- //IP 端口 获取与存储
- add_action('wp_insert_comment','wp_insert_ipport',10,2);
- function wp_insert_ipport($comment_ID,$commmentdata) {
- # $userip = $_SERVER['HTTP_CLIENT_IP']; //这里获取用户 IP 地址,需要按需修改
- $ipport = $_SERVER['REMOTE_PORT'];
- //ipport 是存储在数据库里的字段名字,取出数据的就会用到
- # update_comment_meta($comment_ID,'_userip',$userip);
- update_comment_meta($comment_ID,'_ipport',$ipport);
- }
- //为 IP Port 栏目添加 CSS
- function ipport_css() {
- ?>
- <style type="text/css">
- #_ipport { width: 50px; } /* CSS for ipport columns */
- #_userip { width: 50px; } /* CSS for ip columns */
- #author_ip { width: 50px; } /* CSS for ip columns */
- </style>
- <?php
- }
- add_action('admin_head', 'ipport_css');
- //后台评论添加 IP 端口栏目
- add_filter( 'manage_edit-comments_columns', 'my_comments_columns' );
- add_action( 'manage_comments_custom_column', 'output_my_comments_columns', 10, 2 );
- function my_comments_columns( $columns ){
- # $columns[ '_userip' ] = __( 'User IP' ); //User IP 代表列的名字
- $columns[ 'author_ip' ] = __( 'User IP' ); //User IP 代表列的名字
- $columns[ '_ipport' ] = __( 'IP Port' ); //IP Port 代表列的名字
- return $columns;
- }
- function output_my_comments_columns( $column_name, $comment_id ){
- switch( $column_name ) {
- case "author_ip" :
- echo get_comment_author_IP( $comment_id, 'author_ip', true );
- break;
- # case "_userip" :
- # echo get_comment_meta( $comment_id, '_userip', true );
- # break;
- case "_ipport" :
- echo get_comment_meta( $comment_id, '_ipport', true );
- break;
- }
- }
说明一下:这段代码中,把 IP 也显示在 IP 端口前,给出了 2 种可行的办法,请自行选择修改。其中,被注释掉的一段
- $userip = $_SERVER['HTTP_CLIENT_IP'];
这句用来获取用户的 IP,这里给出的是,获取用户浏览器客户端的 IP 地址,如果用户使用了代理,或者,你用了 CDN,或者,用户是局域网,哦豁,这里就不起作用了,无法获取用户的真实 IP。但是还可以用如下代码替换
- $_SERVER["REMOTE_ADDR"] //取得客户端的 IP 地址;
- $_SERVER["HTTP_X_FORWARDED_FOR"] //通过代理服务器取得客户端的真实 IP 地址;
- $_SERVER["HTTP_CLIENT_IP"] //获取客户端,及浏览器所在的电脑的 ip 地址
建议直接食用,不要挑食,以免出问题。直接食用,效果应该如下:(不是这样?Oh boy, 我也不知道咋办,去调戏度娘吧,或者,留个评论试试?)
插件下载
如果不想折腾代码,那么可以直接下载插件启用后即可使用。声明下,由于初次制作插件,不晓得怎么把下面三个大佬的链接加进去,所以只能在博客里再次表示感谢大佬们分享的代码。
历史上的今天:
- 2017: 提高WordPress访问速度与性能的四大优化方法
- 2016: 美好回忆游戏之说说小C博客的发展历程
- 2016: 我们是如何在一年时间做到草根自媒体博客第一位的?
- 2015: 加强版myQaptcha插件 支持WordPress登录页/评论滑动解锁
- 2015: 健康七大谎言,你上当了吗?
- 2015: 如何才算是一篇有用的文章?
原文地址:https://www.youngfree.cn/seo/2214.html
温馨提示:文章内容仅代表作者个人观点,不代表boke112导航赞同其观点和对其真实性负责!
版权声明:本文为转载文章,来源于 Young Free ,版权归原作者所有,欢迎分享本文,转载请保留出处!
发表于2018-11-10 20:26 26楼
还没查我
发表于2018-08-25 17:44 25楼
这个……现在这么严格了吗
发表于2018-08-25 17:24 24楼
所以,我的站点选择了国外。gcp,aws等溜了一圈,还是vultr性价比高。
@Charles国外的主机相对自由很多,但是就是无法使用国内的很多产品,有得有失,只能自己衡量选择了
发表于2018-08-25 11:54 23楼
厉害厉害,这个可以有
发表于2018-08-25 10:16 22楼
随机几个端口出来~
发表于2018-08-25 09:52 21楼
感谢大佬转载,受宠若惊。
@杨景文
你应该是第一个遇到这个问题并提出解决办法的站长,应该是我们大家多些你的无私分享,让我们懂得如何添加IP和端口号,以防以后被盯上。PS:昨天发布的时候忘记勾选“转载文章”类型,所以没有显示文章的原作者和原链接,幸好有用户“初远”提醒告知,要不然我都还不知道了,真的不好意思。
发表于2018-08-25 08:36 20楼
我申请的非交互式,不用太麻烦~
@青山非交互式是不能有评论留言功能的
@懿古今我这申请的时候也没有关评论,通过之后,也没有什么网安大队发信息给我
发表于2018-08-25 08:15 19楼
转载杨景文博客的文章,也没留原作者和地址啊
@初远
谢谢告知,你不说我还真没留意到这个,因为我在后台添加好转载作者和转载地址,竟然忘记勾选转载文章类型了,再次感谢告知。
发表于2018-08-25 01:29 18楼
感谢博主分享,学习了
发表于2018-08-24 21:32 17楼
优秀,前几天还在群里讨论,才几天解决方案可做出来了~
@蒲公英
这个文章很早以前文章作者就发布了,他应该是第一个遇到这种要求的站长
发表于2018-08-24 21:25 16楼
公安备案的时候好像有这个,但是一直都没查过。
发表于2018-08-24 19:06 15楼
@闲鱼现在武陵区博客也可以直接 非交互式备案了,孟坤大佬的就是 非交互式,还是警察叔叔让他直接选的非交互式。
@杨景文我是网上申请的交互式就直接给通过了,警察叔叔都没喊我 [笑哭]
发表于2018-08-24 14:15 14楼
网安还有这要求,真是不同地方不一样。我当时备案也是,很多地方网上提交就可以了,我这还要当面提交材料。
发表于2018-08-24 14:07 13楼
一个随机端口也要记录?意义在哪?
发表于2018-08-24 12:37 12楼
要是我可能就要关站了,,,
发表于2018-08-24 12:29 11楼
现在guan的好严啊。。。。
发表于2018-08-24 10:19 10楼
网警蜀黍现在变得这么勤奋了呢
@里维斯社这个真不好说,如果真的要求我们也只能按对方要求做了
发表于2018-08-24 10:17 9楼
折腾人,尼玛。
一个博客也这样,又不是大V啊。
@银色月航
只能说看个人运气了
发表于2018-08-24 09:44 8楼
发表于2018-08-24 09:42 7楼
撒时候也要求有这个了?
发表于2018-08-24 09:33 6楼
我靠 这尼玛都要。简直醉了
@雅兮网就看个人运气了,如果真遇到了,可能更奇葩的要求都会有
发表于2018-08-24 09:14 5楼
博主的博客速度怎么那么快
@梦幻可以学习本站分享的网站优化相关文章,比如安装缓存插件,使用CDN等
发表于2018-08-24 09:05 4楼
感觉用处不大
发表于2018-08-24 08:43 地板
有空也多写写ZB的可否?只是希望
@靠谱学生兼职网期待你们折腾成功后投稿过来![[嘻嘻]](https://boke.yigujin.cn/wp-content/themes/Three/images/smilies/2018new_xixi_thumb.png)
发表于2018-08-24 08:35 板凳
这个警察在逗你呢!闲的蛋疼了这是!
@明月登楼整改通知书都下了,只能修改了。
发表于2018-08-24 08:00 沙发
如果不是需要的话我一点也不想加
@轻羽是的,非必要时不折腾,会增加数据库负担