如何在PHP中获得真正的客户端IP或地理位置?

时间:2015-12-02 16:50:07

标签: php ip

我的网站上有用户注册系统。我正在使用ip-api.com的xml ip api来检测用户的位置。我的问题是我使用的PHP脚本返回代理或错误的用户IP地址,这就是为什么我们无法在他们的个人资料中设置正确的位置。

我使用以下条件语句来获取IP地址:

   $ip=$_SERVER["REMOTE_ADDR"];
 if(empty($ip))
 {$ip=

$ _ SERVER [" HTTP_X_FORWARDED_FOR"];}

它会为某些用户返回错误的IP地址。

有没有其他方法可以在php中获得真正的ip或geolocation?

1 个答案:

答案 0 :(得分:0)

您可以看到此主题:How to get Real IP from Visitor?

function getUserIP()
{
    $client  = @$_SERVER['HTTP_CLIENT_IP'];
    $forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
    $remote  = $_SERVER['REMOTE_ADDR'];
    if(filter_var($client, FILTER_VALIDATE_IP))
    {
        $ip = $client;
    }
    elseif(filter_var($forward, FILTER_VALIDATE_IP))
    {
        $ip = $forward;
    }
    else
    {
        $ip = $remote;
    }
    return $ip;
}
$user_ip = getUserIP();