本页主题: PHP网站在使用CDN加速后获取用户真实IP地址的方法 打印 | 加为IE收藏 | 复制链接 | 收藏主题 | 上一主题 | 下一主题

btxd
级别: 管理员


精华: 0
发帖: 106
威望: 106 点
金币: 50043 个
贡献值: 0 点
在线时间:53(小时)
注册时间:2020-04-18
最后登录:2026-03-11

 PHP网站在使用CDN加速后获取用户真实IP地址的方法

  通过对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();
顶端 Posted: 2020-07-02 12:22 | [楼 主]
帖子浏览记录 版块浏览记录
四四一七九 » 电脑综合技术应用

Total 0.010579(s) query 3, Time now is:03-15 06:40, Gzip enabled 鄂ICP备2023031436号
Powered by 四四一七九 © 2020-08 44179.com Corporation