前言
网站接入CDN后,在Emlog获取用户的IP后会导致不准确,甚至网站日志上获取的IP就不是真实的IP,是CDN服务器的IP,这就会引发一些问题。对此本文就针对Emlog站点开启了CDN后评论IP不准确的解决方法。
修改步骤
- 此步骤需要修改核心文件,修改前请做好备份,找到
include/lib/function.base.php
,Emlogpro在38行开始将以下进行代码替换
/** * 获取用户ip地址 */ if (!function_exists('getIp')) { function getIp() { $ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : ''; if (!filter_var($ip, FILTER_VALIDATE_IP)) { $ip = ''; } return $ip; } }
- 替换为
/** * 获取用户ip地址 */ if (!function_exists('getIp')) { function getIp() { $ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : ''; if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $list = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); $ip = $list[0]; } if (!ip2long($ip)) { $ip = ''; } return $ip; } }
- 修改保存以后就可以正常获取IP了,此方法对CDN加速的厂商没用限制,不管是百度云加速七牛等CDN加速的一样适用
emlogpro版本1.8之前需要按以上方法修改,Pro 1.9.0修改地址改为/include/lib/common.php
在Pro 1.9.0版本之后官方更新了获取ip的方法,因此不用手动修改了
未经允许不得转载:
作者: 路羽, 转载或复制请以 超链接形式 并注明出处 路羽博客。
原文地址: 《解决Emlog开启CDN后评论IP不准确的办法》 发布于2022-12-17
评论