好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php获取ip不准确怎么办

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获取ip不准确怎么办的详细内容...

  阅读:49次