当前位置:首页 > PHP教程 > php应用 > 列表

php使用GeoIP库实例

发布:smiling 来源: PHP粉丝网  添加日期:2021-03-03 15:11:28 浏览: 评论:0 

这篇文章主要介绍了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.3\geo\"

测试代码

注意geoip.dll中使用的 GeoIPCity.dat 即 GeoLiteCity.dat,用的时候注意看提示,代码如下:

  1. echo geoip_country_name_by_name( "8.8.8.8" ) . "\n"
  2. print_r( geoip_record_by_name( "8.8.8.8" ) ); 
  3. echo geoip_country_name_by_name( "61.139.2.69" ). "\n"
  4. 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” 即可。

详细到国家,代码如下:

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

详细到国家城市,代码如下:

  1. include("geoipcity.inc"); 
  2. include("geoipregionvars.php"); 
  3. $gi = geoip_open("./GeoLiteCity.dat",GEOIP_STANDARD); 
  4.  
  5. $record = geoip_record_by_addr($gi,"8.8.8.8"); 
  6. print $record->country_code . " " . $record->country_code3 . " " . $record->country_name . "\n"
  7. print $record->region . " " . $GEOIP_REGION_NAME[$record->country_code][$record->region] . "\n"
  8. print $record->city . "\n"
  9. print $record->postal_code . "\n"
  10. print $record->latitude . "\n"
  11. print $record->longitude . "\n"
  12. print $record->metro_code . "\n"
  13. print $record->area_code . "\n"
  14. print $record->continent_code . "\n"
  15.  
  16. print "\n-----\n"
  17. $record = geoip_record_by_addr($gi,"61.139.2.69"); 
  18. print $record->country_code . " " . $record->country_code3 . " " . $record->country_name . "\n"
  19. print $record->region . " " . $GEOIP_REGION_NAME[$record->country_code][$record->region] . "\n"
  20. print $record->city . "\n"
  21. print $record->postal_code . "\n"
  22. print $record->latitude . "\n"
  23. print $record->longitude . "\n"
  24. print $record->metro_code . "\n"
  25. print $record->area_code . "\n"
  26. print $record->continent_code . "\n"
  27. geoip_close($gi); 

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

Tags: GeoIP

分享到: