我正在尝试获取客户端的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地址?
答案 0 :(得分:0)
启用NAT
的计算机很可能是通过路由器从网络中通过的。
在这种情况下,您只会看到该路由器的IP地址,而对它无能为力。
但是您可以检查IP地址和用户代理标头的组合:
$_SERVER['HTTP_USER_AGENT']
不幸的是,没有可靠的方法可以100%检查请求的来源,但是ip地址和用户代理的组合可能适用于简单的情况。