【问题标题】:I'm getting the same ip address from different computers in same network我从同一网络中的不同计算机获取相同的 IP 地址
【发布时间】:2019-12-24 03:25:48
【问题描述】:

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

【问题讨论】:

  • PHP 无法真正检测到本地 IP,因为它的服务器端代码。

标签: php ip-address


【解决方案1】:

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

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

$_SERVER['HTTP_USER_AGENT']

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

【讨论】:

    猜你喜欢
    • 2014-08-05
    • 1970-01-01
    • 2015-10-02
    • 2014-04-15
    • 2019-09-02
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多