Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php I';我从同一网络中的不同计算机获得相同的ip地址_Php_Ip Address - Fatal编程技术网

Php I';我从同一网络中的不同计算机获得相同的ip地址

Php I';我从同一网络中的不同计算机获得相同的ip地址,php,ip-address,Php,Ip Address,我正在尝试获取客户端的ip地址,以便每个设备只使用一个帐户。 然而,当我使用下面的代码时,我发现相同的ip地址从同一网络中的计算机返回 函数get\u client\u ip(){ $ipaddress=''; if(getenv('HTTP\u CLIENT\u IP')) $ipaddress=getenv('HTTP_CLIENT_IP'); else if(getenv('HTTP\u X\u FORWARDED\u FOR')) $ipaddress=getenv('HTTP\u X\

我正在尝试获取客户端的ip地址,以便每个设备只使用一个帐户。 然而,当我使用下面的代码时,我发现相同的ip地址从同一网络中的计算机返回

函数get\u client\u ip(){
$ipaddress='';
if(getenv('HTTP\u CLIENT\u IP'))
$ipaddress=getenv('HTTP_CLIENT_IP');
else if(getenv('HTTP\u X\u FORWARDED\u FOR'))
$ipaddress=getenv('HTTP\u X\u FORWARDED\u FOR');
else if(getenv('HTTP_X_FORWARDED'))
$ipaddress=getenv('HTTP_X_FORWARDED');
else if(getenv('HTTP\u FORWARDED\u FOR'))
$ipaddress=getenv('HTTP_FORWARDED_FOR');
else if(getenv('HTTP_FORWARDED'))
$ipaddress=getenv('HTTP_-FORWARDED');
else if(getenv('REMOTE_ADDR'))
$ipaddress=getenv('REMOTE_ADDR');
其他的
$ipaddress='UNKNOWN';
返回$ipaddress;
}

如何从不同的设备获得正确的ip地址?

这些计算机很可能是通过启用了
NAT
的路由器从网络上运行的。 在这种情况下,您将只看到该路由器的ip地址,您对此无能为力

但您可以检查ip地址和用户代理标头的组合:

$_SERVER['HTTP_USER_AGENT']

不幸的是,没有通用的方法来100%检查请求的来源,但是ip地址和用户代理的组合可以用于简单的场景。

这些计算机很可能是通过启用了
NAT
的路由器从网络出发的。 在这种情况下,您将只看到该路由器的ip地址,您对此无能为力

但您可以检查ip地址和用户代理标头的组合:

$_SERVER['HTTP_USER_AGENT']

不幸的是,没有通用的方法来100%检查请求的来源,但是ip地址和用户代理的组合可以用于简单的场景。

PHP不能真正检测本地ip,因为它的服务器端代码。PHP不能真正检测本地ip,因为它的服务器端代码。