解决Emlog用CDN加速后无法获取真实IP的问题

站点启用CDN服务器之后emlog就会无法正确的获取到访客的IP地址,比如俺是360CDN,几乎都是“广东佛山”的显示,解决这个问题我们需要修改一下emlog内核的代码来解决问题。

用编辑器打开 include/lib/function.base.php, 在60行左右能找到以下的代码

function getIp() {
    $ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
    if (!ip2long($ip)) {
        $ip = '';
    }
    return $ip;
}

修改为以下:

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;
}

就OK了!

广告
© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏
分享
评论 共10条
    • 森七
    • Linux杜朋0
      现在免费支持https的cdn好少啊!
      8月8日回复
      • 森七
        森七作者0
        @Linux杜朋:好像腾讯云支持来着,新出来的几个cdn或许也可以用
    • 森七
    • 微凉0
      可以,很强势,我原来用emlog时也无法获取
      8月7日回复
    • 森七
    • ☆WR☆0
      百度云加速也是这样吗
      8月7日回复
      • 森七
        森七作者0
        @☆WR☆:我是用的百度云,但是没感觉出错,不过我是取消了显示ip的
    • 森七
    • 唯历史0
      就不知道对搜索引擎影响大不大
      8月3日回复