
问题来源
网站在使用CloudFlare CDN服务后,有时候会无法获取到用户访问的真实IP,而导致UserAgent插件无法查询正确的用户IP信息。
解决思路
通过PHP超全局变量 $_SERVER['REMOTE_ADDR']
获得的IP全部是CDN节点的IP,这样会影响一些功能的使用。这种情况下可以使用PHP超全局变量 $_SERVER['HTTP_X_FORWARDED_FOR']
来获取访问者真实IP。
食用指南
请在 Typecho 站点根目录里的 config.inc.php
添加下面这段代码
/** 获取用户真实IP */ if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']); $_SERVER['REMOTE_ADDR'] = $list[0]; }
引用资源:网站开启CDN后获取访问者真实IP
请问一下 config.inc.php文件里我新增的代码不起作用咋办,而且无论如何他都会显示无法获取ip
@Leanard 如果PHP无法获取的话,也可以搭配“nginx/Apache”这类服务来获取用户真实IP
“显示无法获取ip”,可以排查下提供此功能的代码,或许是其中代码出现了问题,导致其获取不到真实IP地址