获取geolock的用户IP地址(不是192.168地址)

时间:2013-09-16 21:02:28

标签: php ip local geo

我正在锁定我们的程序,我们有一个服务,为我们返回国家代码。但如果有人在路由器后面,他们有一个本地192.168.x.x地址,这没告诉我什么。有没有办法在路由器上找到他们的地址?我可以做一个跟踪,但后来我需要自己编程逻辑关于哪个ip是有用的,哪些不是。我正在从php中的服务器执行此代码,我们的客户端Web应用程序是在javascript中。请指教。

由于

2 个答案:

答案 0 :(得分:2)

function get_real_ip() {

    if (!empty($_SERVER['HTTP_X_FORWARED_FOR']))
    {
        $client_ip = $_SERVER['HTTP_X_FORWARED_FOR'];
    }
    elseif (!empty($_SERVER['HTTP_CLIENT_IP']))
    {
        $client_ip = $_SERVER['HTTP_CLIENT_IP'];
    }
    else
    {
        $client_ip = $_SERVER['REMOTE_ADDR'];
    }
    return $client_ip;
}

答案 1 :(得分:0)

对于基于服务器的软件,PHP变量$ _SERVER ['REMOTE_ADDR']将给出客户端的地址。对于路由器后面的客户端,其地址将由路由器固件转换,因此服务器将看到路由器的公共IP地址,而不是客户端的本地私有地址。

所有这一切都被可能存在的干预代理服务器所困扰,这些代理服务器可能会或可能不会告诉您他们的客户端地址是什么。你可以查看$ _SERVER ['HTTP_X_FORWRDED_FOR']或$ _SERVER ['HTTP_CLIENT_IP'],如果它们存在的话。如果没有,您将不得不使用代理地址。