Emlog 开启 CDN 无法获取真实 IP

3,864 0

前几天我写了一篇关于「解决 WP 开 CDN 无法获取真实 IP」的文章,今天碰巧看到一个人在群里求助,他用的是 Emlog 程序,也遇到同样的情况(开启 CDN 之后无法获取真实 IP),于是我就想着把 WordPress 的解决方案放到 Emlog 上面去试一试,结果还真的可以,下面就分享一下过程给小伙伴们参考一下,说不定还能在别的程序上面解决问题呢。

解决步骤

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

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

修改为以下代码:

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

注意

以上代码只在 Emlog 5.3.1 版本上面测试过,其他版本请自行测试(理论上可行)。

评论

(0)

暂无评论,来说两句吧

发布评论

© 2026 一纸忘忧. 保留所有权利.

一纸忘忧的个人网站,关于技术探索与日常生活,记录 Web 开发、服务端与 DevOps 实践,分享软件工具、数码体验,以及代码之外的见闻与思考。