• 技术文章 >后端开发 >PHP问题

    php获取ip不准确怎么办

    藏色散人藏色散人2021-02-24 10:03:57原创29

    php获取ip不准确可能是用户使用了代理,因此“$_SERVER[‘REMOTE_ADDR’]”并不能感知用户真实IP,其解决办法就是通过定义一个“X-Forwarded-For”的实体头来获取真实ip。

    本文操作环境:Windows7系统、PHP7.1、Dell G3电脑。

    php 获取的ip不真实?

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

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

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

    【推荐:PHP视频教程

    代码如下:

    //获取用户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;
        }

    以上就是php获取ip不准确怎么办的详细内容,更多请关注php中文网其它相关文章!

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!
    专题推荐:php
    上一篇:php怎么删除txt文件 下一篇:php 怎么去掉字符串最后一个逗号
    第15期线上培训班

    相关文章推荐

    • php 怎么将字符串转大写• php 去掉html标签的函数• php字符串中替换函数是什么• php怎么去掉字符串中的数字• php怎么删除txt文件

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网