首页 > 资讯列表 > 编程/数据库 >> PHP

php使用GeoIP库实例

PHP 2015-01-01 16:09:05 转载来源: 网络整理/侵权必删

本文为大家讲解的是php使用GeoIP库的方法,及应用实例讲解,本文给出了细分到国家、细分到城市的代码实例 感兴趣的同学参考下。 需要注意的是maxmind是geoip数据库的提供方, 同时也提供了很多语言的sample和api说明文档

本文为大家讲解的是php使用GeoIP库的方法,及应用实例讲解,本文给出了细分到国家、细分到城市的代码实例 感兴趣的同学参考下。

需要注意的是maxmind是geoip数据库的提供方,
同时也提供了很多语言的sample和api说明文档。
比如php,和php的geoip库是有很大区别的,包含使用方式,接口函数。
php官方的geoip需要配置php环境,加载geoip.dll库,并在php.ini中指定GEOIP库地址。
maxmind提供一系列 .inc 和 .php 对环境无依赖,只要支持php,直接require后即可使用。

一、GEOIP数据库

http://dev.maxmind.com/geoip/geolite
细分到国家:GeoLite Country
细分到城市:GeoLite City

二、php官方geoip.dll库

下载dll http://windows.php.net/downloads/pecl/releases/geoip/1.0.8/
修改php.ini,启用geoip库:

extension=php_geoip.dll


追加geoip段,指定数据库位置:

[geoip]
geoip.custom_directory = "D:php5.3geo"

测试代码

注意geoip.dll中使用的 GeoIPCity.dat 即 GeoLiteCity.dat,用的时候注意看提示


echo geoip_country_name_by_name( "8.8.8.8" ) . "n";
print_r( geoip_record_by_name( "8.8.8.8" ) );
echo geoip_country_name_by_name( "61.139.2.69" ). "n";
print_r( geoip_record_by_name(  "61.139.2.69" ) );

三、MaxMind官方php文件函数库

文档和示例:http://dev.maxmind.com/geoip/downloadable
修改maxmind示例中 sample.php 和 sample_city.php 中 GeoIP.dat/GeoLiteCity.dat 路径为你自己的路径
同一目录用 “./GeoIP.dat” 或 “./GeoLiteCity.dat” 即可。
详细到国家


include("geoip.inc");
$gi = geoip_open( "./GeoIP.dat", GEOIP_STANDARD );
echo geoip_country_code_by_addr($gi, "8.8.8.8") . "t" . geoip_country_name_by_addr($gi, "8.8.8.8") . "n";
echo geoip_country_code_by_addr($gi, "61.139.2.69") . "t" . geoip_country_name_by_addr($gi, "61.139.2.69") . "n";
geoip_close($gi);

详细到国家城市


include("geoipcity.inc");
include("geoipregionvars.php");
$gi = geoip_open("./GeoLiteCity.dat",GEOIP_STANDARD);
 
$record = geoip_record_by_addr($gi,"8.8.8.8");
print $record->country_code . " " . $record->country_code3 . " " . $record->country_name . "n";
print $record->region . " " . $GEOIP_REGION_NAME[$record->country_code][$record->region] . "n";
print $record->city . "n";
print $record->postal_code . "n";
print $record->latitude . "n";
print $record->longitude . "n";
print $record->metro_code . "n";
print $record->area_code . "n";
print $record->continent_code . "n";
 
print "n-----n";
$record = geoip_record_by_addr($gi,"61.139.2.69");
print $record->country_code . " " . $record->country_code3 . " " . $record->country_name . "n";
print $record->region . " " . $GEOIP_REGION_NAME[$record->country_code][$record->region] . "n";
print $record->city . "n";
print $record->postal_code . "n";
print $record->latitude . "n";
print $record->longitude . "n";
print $record->metro_code . "n";
print $record->area_code . "n";
print $record->continent_code . "n";
geoip_close($gi);

看自己开发环境和具体情况决定用哪种


标签: php 使用 GeoIP 实例


声明:本文内容来源自网络,文字、图片等素材版权属于原作者,平台转载素材出于传递更多信息,文章内容仅供参考与学习,切勿作为商业目的使用。如果侵害了您的合法权益,请您及时与我们联系,我们会在第一时间进行处理!我们尊重版权,也致力于保护版权,站搜网感谢您的分享!

站长搜索

http://www.adminso.com

Copyright @ 2007~2024 All Rights Reserved.

Powered By 站长搜索

打开手机扫描上面的二维码打开手机版


使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

站长搜索目录系统技术支持