猿问

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

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


跃然一笑
浏览 184回答 1
1回答

慕田峪4524236

这些计算机很可能是通过NAT启用的路由器从网络进入的。在这种情况下,您将只能看到该路由器的 IP 地址,您无能为力。但是您可以检查 ip 地址和用户代理标头的组合:$_SERVER['HTTP_USER_AGENT']不幸的是,没有可靠的方法来 100% 检查请求的来源,但 IP 地址和用户代理的组合可以适用于简单的场景。
随时随地看视频慕课网APP
我要回答