小樱 发表于 2025/7/14 02:23

nexusphp使用cloudflare cf cdn后,无法获取到pt站用户当前真实ip解决办法,HTTP_X_FORWARDED_FOR只获取第一个xff地址

nexusphp使用cloudflare cf cdn后,无法获取到pt站用户当前真实ip解决办法,HTTP_X_FORWARDED_FOR只获取第一个xff地址

include文件夹打开文件globalfunctions.php
源代码
function getip() {
        if (isset($_SERVER)) {
                if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && validip($_SERVER['HTTP_X_FORWARDED_FOR'])) {
                        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
                } elseif (isset($_SERVER['HTTP_CLIENT_IP']) && validip($_SERVER['HTTP_CLIENT_IP'])) {
                        $ip = $_SERVER['HTTP_CLIENT_IP'];
                } else {
                        $ip = $_SERVER['REMOTE_ADDR'];
                }
        } else {
                if (getenv('HTTP_X_FORWARDED_FOR') && validip(getenv('HTTP_X_FORWARDED_FOR'))) {
                        $ip = getenv('HTTP_X_FORWARDED_FOR');
                } elseif (getenv('HTTP_CLIENT_IP') && validip(getenv('HTTP_CLIENT_IP'))) {
                        $ip = getenv('HTTP_CLIENT_IP');
                } else {
                        $ip = getenv('REMOTE_ADDR');
                }
        }

        return $ip;
}
新代码
function getip() {
        if (isset($_SERVER)) {
                if (isset($_SERVER['HTTP_CLIENT_IP']) && validip($_SERVER['HTTP_CLIENT_IP'])) {
                        $ip = $_SERVER['HTTP_CLIENT_IP'];
                } elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) {
                        $ip = $matches;
                } else {
                        $ip = $_SERVER['REMOTE_ADDR'];
                }
        } else {
                if (getenv('HTTP_CLIENT_IP') && validip(getenv('HTTP_CLIENT_IP'))) {
                        $ip = getenv('HTTP_CLIENT_IP');
                } elseif (getenv('HTTP_X_FORWARDED_FOR') && preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s', getenv('HTTP_X_FORWARDED_FOR'), $matches)) {
            $ip = $matches;
                } else {
                        $ip = getenv('REMOTE_ADDR');
                }
        }

        return $ip;
}

页: [1]
查看完整版本: nexusphp使用cloudflare cf cdn后,无法获取到pt站用户当前真实ip解决办法,HTTP_X_FORWARDED_FOR只获取第一个xff地址