当前位置:Gxlcms > PHP教程 > php获取ip不准确怎么办

php获取ip不准确怎么办

时间:2021-07-01 10:21:17 帮助过:4人阅读

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视频教程】

代码如下:

  1. //获取用户IP地址
  2. public function getIp()
  3. {
  4. if(!empty($_SERVER["HTTP_CLIENT_IP"]))
  5. {
  6. $cip = $_SERVER["HTTP_CLIENT_IP"];
  7. }
  8. else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
  9. {
  10. $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
  11. }
  12. else if(!empty($_SERVER["REMOTE_ADDR"]))
  13. {
  14. $cip = $_SERVER["REMOTE_ADDR"];
  15. }
  16. else
  17. {
  18. $cip = '';
  19. }
  20. preg_match("/[\d\.]{7,15}/", $cip, $cips);
  21. $cip = isset($cips[0]) ? $cips[0] : 'unknown';
  22. unset($cips);
  23. return $cip;
  24. }

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

人气教程排行