我的php代码没有返回正确的ip地址?
我目前有一个php函数,用来确定我网站上每个访问者的ip地址,但出于某种原因,它会不断返回此ip地址:10.1.1.27即使我使用vpn更改我的ip地址(到不同的国家,例如美国、德国、英国),它仍会返回该地址。我希望有人能给我解释一下,如果可能的话,告诉我这是不是我的代码有问题 功能:我的php代码没有返回正确的ip地址?,php,ip,ip-address,Php,Ip,Ip Address,我目前有一个php函数,用来确定我网站上每个访问者的ip地址,但出于某种原因,它会不断返回此ip地址:10.1.1.27即使我使用vpn更改我的ip地址(到不同的国家,例如美国、德国、英国),它仍会返回该地址。我希望有人能给我解释一下,如果可能的话,告诉我这是不是我的代码有问题 功能: function getIP(){ foreach (array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X
function getIP(){
foreach (array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR') as $key){
if (array_key_exists($key, $_SERVER) === true){
foreach (explode(',', $_SERVER[$key]) as $ip){
$ip = trim($ip);
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false){
return $ip;
}else{
echo $ip;
throw new Exception("IP address is not valid");
}
}
}
}
}
我的猜测是,你有一个防火墙或其他一些物理设备,它正在监听访问者的IP地址 您是否执行了反向查找以查看网络上的IP地址 这可能会对你有所帮助
<?php
if (getenv('HTTP_X_FORWARDED_FOR')) {
$pipaddress = getenv('HTTP_X_FORWARDED_FOR');
$ipaddress = getenv('REMOTE_ADDR');
echo "Your Proxy IP address is : ".$pipaddress. "(via $ipaddress)" ;
} else {
$ipaddress = getenv('REMOTE_ADDR');
echo "Your IP address is : $ipaddress";
}
?>
我也有同样的问题。事实证明,我得到的是代理IP地址,而不是我自己的IP地址。所以我跑了:
var_dump($_SERVER)
//you could also use print_r($_SERVER);
然后寻找这样的东西:
["HTTP_X_REAL_IP"]
$ip = getenv('HTTP_X_REAL_IP')
然后将其捕获到一个变量中,如下所示:
["HTTP_X_REAL_IP"]
$ip = getenv('HTTP_X_REAL_IP')
此代码所在的服务器在哪里?它在你的网络上吗?代码位于我工作的服务器上。是的,它在我的网络上,但这就是为什么我要使用VPN扩展来测试它,它改变了我的IP。
IP
它的输出是你本地的,你仍然在本地连接到它,尽管VPNhrm听起来像是你的权利!谢谢,我将尝试在一台没有连接到我的works本地网络的机器上测试它。好的,它成功了!非常感谢,救生员:)