获取用户计算机的正确IP地址

时间:2015-06-05 05:21:01

标签: php

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

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

是否获得正确的用户计算机IP以获取正确的国家/地区代码?

2 个答案:

答案 0 :(得分:4)

它获取用户网关或路由器的IP地址,用户的IP地址可能会因用户使用路由器而无法获得,但此IP足以获得该县它会给你正确的国家。

答案 1 :(得分:3)

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?