时间: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视频教程】
代码如下:
- //获取用户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不准确怎么办的详细内容,更多请关注gxlcms其它相关文章!