如何使用PHP获取页面访问者国家/地区?

时间:2012-10-19 00:39:10

标签: php api ip country

对于我正在开发的网站,我希望它能说每个国家/地区有多少用户访问过我的网站,但我很好奇的是如何获取用户的国家/地区(来自他们的IP,可能?)?我已经四处寻找API了几个小时,但我找不到任何体面的东西。有没有人有任何建议?谢谢你的帮助:)。

3 个答案:

答案 0 :(得分:11)

您可以使用geoplugin.net

等外部API
$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;
}

答案 1 :(得分:1)

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

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

有几个地方提供地理位置数据库。一些成本(它们往往更准确,更新),但免费的通常也很好。

答案 2 :(得分:0)

有时我们需要根据访问者的国家/地区管理内容或货币。通常这种情况出现在每个开发人员身上,他们都试图找到更好的解决方案。你可以在这里找到详细的文章 - http://virallangaliya.blogspot.in/2013/04/how-to-find-city-and-country-of-visitor.html