当我从本地主机上的ipconfig检查ip时。我正在获取这个100.78.80.xxx (US)
的IP,当我在ip2location/ip2nation
这样的网站上查看IP时,我会得到这样的115.245.20.xxx (IN)
IP。
我想知道为什么?
我想获取用户的IP地址以获取国家/地区名称。我使用$_SERVER['REMOTE_ADDR']
获取用户的IP地址,并获取国家/地区名称。
是否获得正确的用户计算机IP以获取正确的国家/地区代码?
答案 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?