php 获取的ip不真实

各位,突然想到一个东西,我们这边不是一般$_SERVER[‘REMOTE_ADDR’];获取服务器内网IP(很可能就是服务器的代理IP)。那个代码是没有问题,然后我们使用了反向代理(nginx等),用户也可能使用代理,因此单纯的$_SERVER[‘REMOTE_ADDR’]并不能感知用户真实IP。

但是有个参数能透过代理IP取到真实用户的地址。对HTTp协议进行扩展。定义了一个叫做X-Forwarded-For的实体头。

因为我们考虑这个,主要是做广告的星友们,毕竟别人可以代理,刷量呢。

代码如下:

    //获取用户IP地址

    public function getIp()

    {

        if(!empty($_SERVER["HTTP_CLIENT_IP"]))

        {

            $cip = $_SERVER["HTTP_CLIENT_IP"];

        }

        else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))

        {

            $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];

        }

        else if(!empty($_SERVER["REMOTE_ADDR"]))

        {

            $cip = $_SERVER["REMOTE_ADDR"];

        }

        else

        {

            $cip = '';

        }

        preg_match("/[\d\.]{7,15}/", $cip, $cips);

        $cip = isset($cips[0]) ? $cips[0] : 'unknown';

        unset($cips);

        return $cip;

    }

发布了53 篇原创文章 · 获赞 61 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_40884473/article/details/93038945