我从同一网络中的不同计算机获取相同的IP地址

时间:2019-08-18 19:33:14

标签: php ip-address

我正在尝试获取客户端的IP地址,以使他们每台设备仅使用一个帐户。 但是,当我使用以下代码时,我发现从同一网络中的计算机返回了相同的IP地址。

function get_client_ip() {
        $ipaddress = '';
        if (getenv('HTTP_CLIENT_IP'))
            $ipaddress = getenv('HTTP_CLIENT_IP');
        else if(getenv('HTTP_X_FORWARDED_FOR'))
            $ipaddress = getenv('HTTP_X_FORWARDED_FOR');
        else if(getenv('HTTP_X_FORWARDED'))
            $ipaddress = getenv('HTTP_X_FORWARDED');
        else if(getenv('HTTP_FORWARDED_FOR'))
            $ipaddress = getenv('HTTP_FORWARDED_FOR');
        else if(getenv('HTTP_FORWARDED'))
            $ipaddress = getenv('HTTP_FORWARDED');
        else if(getenv('REMOTE_ADDR'))
            $ipaddress = getenv('REMOTE_ADDR');
        else
            $ipaddress = 'UNKNOWN';

        return $ipaddress;
    }

如何从其他设备获取正确的IP地址?

1 个答案:

答案 0 :(得分:0)

启用NAT的计算机很可能是通过路由器从网络中通过的。 在这种情况下,您只会看到该路由器的IP地址,而对它无能为力。

但是您可以检查IP地址和用户代理标头的组合:

$_SERVER['HTTP_USER_AGENT']

不幸的是,没有可靠的方法可以100%检查请求的来源,但是ip地址和用户代理的组合可能适用于简单的情况。