我正在尝试获取客户端的 IP 地址,以便他们在每台设备上仅使用一个帐户。但是,当我使用以下代码时,发现从同一网络中的计算机返回的IP地址相同。function get_client_ip() { $ipaddress = ''; if (getenv('HTTP_CLIENT_IP')) $ipaddress = getenv('HTTP_CLIENT_IP'); else if(getenv('HTTP_X_FORWARDED_FOR')) $ipaddress = getenv('HTTP_X_FORWARDED_FOR'); else if(getenv('HTTP_X_FORWARDED')) $ipaddress = getenv('HTTP_X_FORWARDED'); else if(getenv('HTTP_FORWARDED_FOR')) $ipaddress = getenv('HTTP_FORWARDED_FOR'); else if(getenv('HTTP_FORWARDED')) $ipaddress = getenv('HTTP_FORWARDED'); else if(getenv('REMOTE_ADDR')) $ipaddress = getenv('REMOTE_ADDR'); else $ipaddress = 'UNKNOWN'; return $ipaddress; }如何从不同设备获取正确的IP地址?
1 回答
慕田峪4524236
TA贡献1875条经验 获得超5个赞
这些计算机很可能是通过NAT
启用的路由器从网络进入的。在这种情况下,您将只能看到该路由器的 IP 地址,您无能为力。
但是您可以检查 ip 地址和用户代理标头的组合:
$_SERVER['HTTP_USER_AGENT']
不幸的是,没有可靠的方法来 100% 检查请求的来源,但 IP 地址和用户代理的组合可以适用于简单的场景。
- 1 回答
- 0 关注
- 183 浏览
添加回答
举报
0/150
提交
取消