查看完整版本: [-- PHP网站在使用CDN加速后获取用户真实IP地址的方法 --]

四四一七九 -> 电脑综合技术应用 -> PHP网站在使用CDN加速后获取用户真实IP地址的方法 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

冰天雪地 2020-07-02 12:22
  通过对PHP网站在使用CDN加速和未使用CDN加速时的研究,我总结出以下三点:

  1、在使用CDN时,$_SERVER变量中就会含有“HTTP_X_FORWARDED_FOR”元素,并且它里面含有用户的真实IP地址,另外在“HTTP_X_FORWARDED_FOR”元素中是多个IP地址,并用英文逗号分开,第一个为用户的真实IP地址。

  2、未使用CDN时,$_SERVER变量中不会出现“HTTP_X_FORWARDED_FOR”元素。

  我们可以通过判断$_SERVER数组变量中是否含有“HTTP_X_FORWARDED_FOR”元素来判断,网站是否使用CDN加速,如果使用了CDN加速并返回用户的真实IP,如果没使用就返回 “REMOTE_ADDR" 元素的值。

代码:

if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])
{
    $arr = explode(',' $_SERVER['HTTP_X_FORWARDED_FOR']);
    $userip = $arr[0];
}
else
{
    $userip = $_SERVER['REMOTE_ADDR'];
}

函数代码:

如果你想在PHP的文件中多次调用以上代码,我们把可以把它封装成一个函数,如下

function GetUserIP()
{
    if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
    {
        $arr = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
        return $arr[0];
    }
    else
    {
        return $_SERVER['REMOTE_ADDR'];
    }
}

函数调用方法:

GetUserIP();


查看完整版本: [-- PHP网站在使用CDN加速后获取用户真实IP地址的方法 --] [-- top --]


Powered by PHPWind v6.3.2 Code © 2003-08 PHPWind
Time 0.003618 second(s),query:3 Gzip enabled

You can contact us