获取地理锁定的用户 IP 地址(不是 192.168 地址)


Get user ip address for geolock (not 192.168 address)

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

谢谢

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;
}

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

所有这些都因可能存在干预代理服务器而进一步混淆,这些代理服务器可能会或可能不会告诉您它们的客户端地址是什么。您可以查看 $_SERVER['HTTP_X_FORWRDED_FOR] 或 $_SERVER['HTTP_CLIENT_IP'](如果它们存在)。如果没有,您将不得不使用代理地址。