2012-10-19 39 views
0

对于我正在开发的网站,我希望它能说出每个国家有多少用户访问过我的网站,但我很好奇的是如何获取用户的国家(从​​他们的IP,也许?)?我几个小时一直在四处寻找API,但我找不到像样的东西。有没有人有任何建议?谢谢您的帮助 :)。如何使用PHP获取页面访问者国家?

回答

10

您可以使用外部API的像geoplugin.net

$xml = simplexml_load_file("http://www.geoplugin.net/xml.gp?ip=76.109.14.196"); 
echo $xml->geoplugin_countryName ; 

输出国家

United States 

完整的XML响应

<geoPlugin> 
<geoplugin_request>76.109.14.196</geoplugin_request> 
<geoplugin_status>200</geoplugin_status> 
<geoplugin_city>West Palm Beach</geoplugin_city> 
<geoplugin_region>FL</geoplugin_region> 
<geoplugin_areaCode>561</geoplugin_areaCode> 
<geoplugin_dmaCode>548</geoplugin_dmaCode> 
<geoplugin_countryCode>US</geoplugin_countryCode> 
<geoplugin_countryName>United States</geoplugin_countryName> 
<geoplugin_continentCode>NA</geoplugin_continentCode> 
<geoplugin_latitude>26.761600494385</geoplugin_latitude> 
<geoplugin_longitude>-80.091598510742</geoplugin_longitude> 
<geoplugin_regionCode>FL</geoplugin_regionCode> 
<geoplugin_regionName>Florida</geoplugin_regionName> 
<geoplugin_currencyCode>USD</geoplugin_currencyCode> 
<geoplugin_currencySymbol>&#36;</geoplugin_currencySymbol> 
<geoplugin_currencyConverter>1</geoplugin_currencyConverter> 
</geoPlugin> 

简单的函数来获取IP

function getIP() { 
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) { 
     $ip = $_SERVER['HTTP_CLIENT_IP']; 
    } elseif (! empty($_SERVER['HTTP_X_FORWARDED_FOR'])) 
    { 
     $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; 
    } else { 
     $ip = $_SERVER['REMOTE_ADDR']; 
    } 
    return $ip; 
} 
+0

啊!发现有这样的事情!感谢您的回答,它真的有帮助:) – xlTobylx

+0

@xlTobylx欢迎您 – Baba

+0

“HTTP_X_FORWARDED_FOR永远不应该被用作验证用户IP的手段”http://www.thespanner.co.uk/2007/12/02/伪造最意想不到/ –

1

基本方法是记录传入的IP地址(位于$_SERVER['REMOTE_ADDR']),然后使用地理位置数据库将其转换为国家/地区信息。

您需要保持您的地理位置数据库保持最新,请记住。

有几个地方提供地理定位数据库。一些成本(他们倾向于更准确和更新),但免费的通常也很好。

-1

这是一种非常常见的情况,如果您尝试search in google,您会发现很多有用的结果。

是的,你使用访问者的IP并解析他们的国家。但是更复杂的算法包括浏览器接受语言,用于某人处于不同国家的情况。

再见

相关问题