我尝试了每个代码并阅读了有关此主题的所有帖子,但没有解决我的问题。
当浏览器选项“使用内部网站点的代理”打开时,代码无法获得真正的IP。 它向我展示了PROXY IP ......
码:
function get_ip_address()
{
$aa = array ( 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', // 'HTTP_HOST', 'REMOTE_ADDR');
foreach ($aa as $key) {
if (array_key_exists($key, $_SERVER) === true) {
foreach (explode(',', $_SERVER[$key]) as $ip) {
if (filter_var($ip, FILTER_VALIDATE_IP) !== false) {
return $ip;
}
}
}
}
}
#endfunc
echo get_ip_address();
那么,这就是代理的目的。您无法可靠地获取用户的IP地址,即使可以,您的意思是他们的WAN地址吗?或者任意数量的LAN地址之一?在一般情况下,这是一个难以解决的问题。
public function GetClientIP()
{
if (!empty($_SERVER['HTTP_CLIENT_IP']))
//check ip from share internet
{
$ip = $_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
//to check ip is pass from proxy
{
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}