我试图从IP地址获取国家/地区。 问题是用户IP在某些计算机上不显示。一些测试它的用户获得IP但其他人不会(在同一个WiFi网络上)。无法为使用PHP的用户获取正确的IP地址
这是我的代码。哪里不对?
function VisitorIP()
{
if (!empty($_SERVER['HTTP_CLIENT_IP'])) //check ip from share internet
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) //to check ip is pass from proxy
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}
$ip_address = VisitorIP();
$geodata = file_get_contents('http://api.ipinfodb.com/v3/ip-country/?key=0000&ip=' . $ip_address . '&format=json');
$decoded = json_decode($geodata);
$country = strtolower($decoded->countryCode);
总是可以看看phpBB。尽管有各种各样的条件(包括代理),但他们有一个非常完整的方法来获取用户的IP。 – 2012-03-21 13:59:48
'var_dump($ ip_address)'给不给你一个访问者。那里有什么? – Jon 2012-03-21 14:00:25
访客*必须*拥有IP地址,否则他们无法收到回复。您还应该专门使用'$ _SERVER ['REMOTE_ADDR']',所有其他值都不可确定,可能是假的。 – deceze 2012-03-21 14:04:57