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 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
Apr 09 PHP
php array的学习笔记
May 16 PHP
PHP 年龄计算函数(精确到天)
Jun 07 PHP
php命令行用法入门实例教程
Oct 27 PHP
php求一个网段开始与结束IP地址的方法
Jul 09 PHP
php递归实现无限分类的方法
Jul 28 PHP
php中session_id()函数详细介绍,会话id生成过程及session id长度
Sep 23 PHP
微信支付扫码支付php版
Jul 22 PHP
PHP实现的超长文本分页显示功能示例
Jun 04 PHP
PHP+ajax实现二级联动菜单功能示例
Aug 10 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
Sep 04 PHP
在 PHP 和 Laravel 中使用 Traits的方法
Nov 13 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
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
2013/06/29 PHP
jQuery学习笔记之jQuery的动画
2010/12/22 Javascript
nodejs 实现模拟form表单上传文件
2014/07/14 NodeJs
js实现对table的增加行和删除行的操作方法
2016/10/13 Javascript
BootStrap select2 动态改变值的方法
2017/02/10 Javascript
用户管理的设计_jquery的ajax实现二级联动效果
2017/07/13 jQuery
AngularJS中下拉框的高级用法示例
2017/10/11 Javascript
微信小程序实现人脸检测功能
2018/05/25 Javascript
微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}
2018/10/12 Javascript
原生js实现密码强度验证功能
2020/03/18 Javascript
JavaScript实现音乐导航效果
2020/11/19 Javascript
pyqt4教程之messagebox使用示例分享
2014/03/07 Python
Python使用matplotlib绘制动画的方法
2015/05/20 Python
python递归函数绘制分形树的方法
2018/06/22 Python
Python闭包思想与用法浅析
2018/12/27 Python
Python进阶之自定义对象实现切片功能
2019/01/07 Python
python实现大转盘抽奖效果
2019/01/22 Python
pandas计数 value_counts()的使用
2019/06/24 Python
python适合人工智能的理由和优势
2019/06/28 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
2020/06/01 Python
python 三种方法实现对Excel表格的读写
2020/11/19 Python
如何利用Python matplotlib绘制雷达图
2020/12/21 Python
CSS3转换功能transform主要属性值分析及实现分享
2012/05/06 HTML / CSS
css3和jquery实现的可折叠导航菜单适合放在手机网页的导航菜单
2014/09/02 HTML / CSS
HTML5 的新的表单元素(datalist/keygen/output)使用介绍
2013/07/19 HTML / CSS
美国职棒大联盟的官方手套、球和头盔:Rawlings
2020/02/15 全球购物
经典大学生求职信范文
2014/01/06 职场文书
总经理助理工作职责
2014/02/06 职场文书
上海世博会志愿者口号
2014/06/17 职场文书
化学工程专业求职信
2014/08/10 职场文书
师德承诺书
2015/01/20 职场文书
万里长城导游词
2015/01/30 职场文书
2015年业务员工作总结范文
2015/04/07 职场文书
工厂员工辞职信范文
2015/05/12 职场文书
《好妈妈胜过好老师》:每个孩子的优秀都是有源头的
2020/01/03 职场文书
关于MySQL临时表为什么可以重名的问题
2022/03/22 MySQL