【问题标题】:Get correct IP address of user machine获取用户机器的正确IP地址
【发布时间】:2015-08-19 22:50:09
【问题描述】:

当我从本地主机上的 ipconfig 检查 ip 时。我得到这样的 IP 100.78.80.xxx (US),当我在像 ip2location/ip2nation 这样的网站上检查 IP 时,我得到这样的 IP 115.245.20.xxx (IN)。 我想知道为什么?

我想获取用户 IP 地址以获取国家名称。我正在使用$_SERVER['REMOTE_ADDR'] 获取用户IP 地址,并将获取国家/地区名称。

是否获取用户机器的正确IP以获得正确的国家代码?

【问题讨论】:

标签: php


【解决方案1】:

它获取用户网关或路由器的IP地址,用户的IP地址可能不同,用户使用路由器时无法获取,但这个IP足以获取县,它会给你正确的国家。

【讨论】:

    【解决方案2】:

    Luthando Loot 是对的。答案在这里: Getting visitors country from their IP

    但是,它位于答案中而不是问题中。

    if (isset($_SERVER['HTTP_CLIENT_IP']))
    {
        $real_ip_adress = $_SERVER['HTTP_CLIENT_IP'];
    }
    
    if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
    {
        $real_ip_adress = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
        $real_ip_adress = $_SERVER['REMOTE_ADDR'];
    }
    

    您应该按以下顺序检查这些值:

    HTTP_CLIENT_IP
    HTTP_X_FORWARDED_FOR
    REMOTE_ADDR
    

    这并不意味着你会准确地得到他的IP地址。它可以很容易地被匿名器、代理、ISP 等隐藏起来。但是,它比只查看 REMOTE_ADDR 更有效。

    SERVER 数组中还有一些其他值。实际上,这个问题与此重复:
    What is the most accurate way to retrieve a user's correct IP address in PHP?

    【讨论】:

    • 感谢您的回答。投票赞成。
    猜你喜欢
    • 2018-03-18
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 2022-01-20
    • 1970-01-01
    相关资源
    最近更新 更多