GeoIP PHP实现案例

GeoIP数据库是广泛使用的商业IP数据库,GeoIP数据库免费版提供国家代码的信息,也就是说能够精确到IP地址所在地国家,如果你要更精确的IP地址定位,那么你需要购买更高版本。

GeoIP数据库是广泛使用的商业IP数据库,GeoIP数据库免费版提供国家代码的信息,也就是说能够精确到IP地址所在地国家,如果你要更精确的IP地址定位,那么你需要购买更高版本。

这里给出一个GeoIP Lite版本的下载地址和简单应用。

GeoIP 数据库文件下载

curl -o GeoIP.dat.gz  \
     http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
gunzip GeoIP.dat.gz

GeoIP类文件下载:

接着下载 GeoIP 的 PHP 文件,保存为 geoip.inc
curl -o geoip.inc http://geolite.maxmind.com/download/geoip/api/php/geoip.inc

GeoIP的PHP API文件打包下载地址:

http://geolite.maxmind.com/download/geoip/api/php/php-1.11.tar.gz

GeoIP查询PHP脚本:

下面的代码能够给出访问者IP的国家代码与国家名称

<?php
    //计时开始
    function utime() {
        $time = explode( " ", microtime() );
        $usec = (double)$time[0];
        $sec = (double)$time[1];
        return $usec + $sec;
    }
    $startTimes = utime();
 
    include("geoip.inc");
 
    // open the geoip database
    $gi = geoip_open("GeoIP.dat",GEOIP_STANDARD);
 
    // 获取国家代码
    $country_code = geoip_country_code_by_addr($gi, $_SERVER[‘REMOTE_ADDR’]);
    echo "Your country code is: <strong>$country_code</strong> <br />";
 
    // 获取国家名称
    $country_name = geoip_country_name_by_addr($gi, $_SERVER[‘REMOTE_ADDR’]);
    echo "Your country name is: <strong>$country_name</strong> <br />";
 
    // close the database
    geoip_close($gi);
 
    //运行结束时间
    $endTimes = utime();
    $runTimes = sprintf( ‘%0.4f’, ( $endTimes – $startTimes ) );
    echo "Processed in " . $runTimes . "second.";
?>

GeoIP查询实现

  • http://iplocation.truevue.org/

Leave a Reply

Your email address will not be published. Required fields are marked *