php使用GeoIP库实例


Posted in PHP onJune 27, 2014

需要注意的是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,用的时候注意看提示

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 相关文章推荐
十天学会php之第七天
Oct 09 PHP
PHP编程与应用
Oct 09 PHP
PHP开发中常用的8个小技巧
Aug 27 PHP
php array_map array_multisort 高效处理多维数组排序
Jun 11 PHP
PHP 的ArrayAccess接口 像数组一样来访问你的PHP对象
Oct 12 PHP
理解和运用PHP中的多态性[译]
Aug 02 PHP
PHP数组循环操作详细介绍 附实例代码
Feb 03 PHP
php查询whois信息的方法
Jun 08 PHP
php获取远程文件大小
Oct 20 PHP
教大家制作简单的php日历
Nov 17 PHP
PHP进程通信基础之信号
Feb 19 PHP
删除PHP数组中头部、尾部、任意元素的实现代码
Apr 10 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十四)
Jun 26 #PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十三)
Jun 26 #PHP
ThinkPHP模板自定义标签使用方法
Jun 26 #PHP
ThinkPHP调用百度翻译类实现在线翻译
Jun 26 #PHP
使用ThinkPHP+Uploadify实现图片上传功能
Jun 26 #PHP
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
Jun 26 #PHP
ThinkPHP实现将本地文件打包成zip下载
Jun 26 #PHP
You might like
PHP 源代码压缩小工具
2009/12/22 PHP
Centos7.7 64位利用本地完整安装包安装lnmp/lamp套件教程
2021/03/09 Servers
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
2011/06/27 Javascript
浅析node.js中close事件
2014/11/26 Javascript
jQuery中closest和parents的区别分析
2015/05/07 Javascript
jQuery左侧大图右侧小图焦点图幻灯切换代码分享
2015/08/19 Javascript
深入理解Angular2 模板语法
2016/08/07 Javascript
js字符串引用的两种方式(必看)
2016/09/18 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
2016/10/13 Javascript
jQuery UI插件实现百度提词器效果
2016/11/21 Javascript
谈谈因Vue.js引发关于getter和setter的思考
2016/12/02 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
js中编码函数:escape,encodeURI与encodeURIComponent详解
2017/03/21 Javascript
bootstrap选项卡扩展功能详解
2017/06/14 Javascript
React Native中Navigator的使用方法示例
2017/10/13 Javascript
Vue.js实现列表清单的操作方法
2017/11/15 Javascript
完美解决iview 的select下拉框选项错位的问题
2018/03/02 Javascript
[38:31]完美世界DOTA2联赛PWL S3 Magma vs GXR 第一场 12.13
2020/12/17 DOTA
全面解析Python的While循环语句的使用方法
2015/10/13 Python
Python2和Python3中print的用法示例总结
2017/10/25 Python
Flask框架实现给视图函数增加装饰器操作示例
2018/07/16 Python
Python自动化导出zabbix数据并发邮件脚本
2019/08/16 Python
解决pandas展示数据输出时列名不能对齐的问题
2019/11/18 Python
基于SpringBoot构造器注入循环依赖及解决方式
2020/04/26 Python
python操作toml文件的示例代码
2020/11/27 Python
高中军训感言500字
2014/02/24 职场文书
实习生评语
2014/04/26 职场文书
2014年党员加强作风建设思想汇报
2014/09/15 职场文书
2014小学教师年度考核工作总结
2014/12/03 职场文书
优秀班组申报材料
2014/12/25 职场文书
2015年复活节活动总结
2015/02/27 职场文书
居委会工作总结2015
2015/05/18 职场文书
导游词之无锡古运河
2019/11/14 职场文书
关于python pygame游戏进行声音添加的技巧
2021/10/24 Python
Python if else条件语句形式详解
2022/03/24 Python
Vue.Draggable实现交换位置
2022/04/07 Vue.js