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

I'm getting the same ip address from different computers in same network

我正在尝试获取客户端的 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 地址?

这些计算机很可能是通过启用了 NAT 的路由器从网络访问的。 在那种情况下,您将只能看到该路由器的 IP 地址,无法对其进行任何操作。

但是您可以检查 ip 地址和 user-agent header:

的组合
$_SERVER['HTTP_USER_AGENT']

不幸的是,没有任何方法可以 100% 检查请求的来源,但是 IP 地址和 user-agent 的组合可以用于简单的场景。