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 数组遍历顺序理解
Sep 09 PHP
php面向对象全攻略 (一) 面向对象基础知识
Sep 30 PHP
php中的观察者模式
Mar 24 PHP
PHP 抓取网页图片并且另存为的实现代码
Mar 24 PHP
7个超级实用的PHP代码片段
Jul 11 PHP
php网上商城购物车设计代码分享
Feb 15 PHP
php和js如何通过json互相传递数据相关问题探讨
Feb 26 PHP
php 读取文件头判断文件类型的实现代码
Aug 05 PHP
php对csv文件的读取,写入,输出下载操作详解
Aug 10 PHP
VPS中使用LNMP安装WordPress教程
Dec 28 PHP
mysqli扩展无法在PHP7下升级问题的解决
Sep 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
2020年4月放送决定!第2期TV动画《邪神酱飞踢》视觉图&主题曲情报公开!
2020/03/06 日漫
用PHP实现WEB动态网页静态
2006/10/09 PHP
input、button的不同type值在ajax提交表单时导致的陷阱
2009/02/24 Javascript
jQuery 定时局部刷新(setInterval)
2010/11/19 Javascript
jQuery操作Select选择的Text和Value(获取/设置/添加/删除)
2013/03/06 Javascript
js+css实现文字散开重组动画特效代码分享
2015/08/21 Javascript
Prototype框架详解
2015/11/25 Javascript
JavaScript给input的value赋值引发的关于基本类型值和引用类型值问题
2015/12/07 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
2016/01/07 Javascript
Javascript 实现简单计算器实例代码
2016/10/23 Javascript
jQuery基于ajax方式实现用户名存在性检查功能示例
2017/02/10 Javascript
创建Vue项目以及引入Iview的方法示例
2018/12/03 Javascript
ECharts地图绘制和钻取简易接口详解
2019/07/12 Javascript
JS函数进阶之prototy用法实例分析
2020/01/15 Javascript
利用 Chrome Dev Tools 进行页面性能分析的步骤说明(前端性能优化)
2021/02/24 Javascript
[01:33]DOTA2上海特级锦标赛 LIQUID战队完整宣传片
2016/03/16 DOTA
Python解释执行原理分析
2014/08/22 Python
Python中的with...as用法介绍
2015/05/28 Python
Python实现全角半角字符互转的方法
2016/11/28 Python
Python聊天室程序(基础版)
2018/04/01 Python
python创建文件备份的脚本
2018/09/11 Python
python中使用zip函数出现错误的原因
2018/09/28 Python
Python Datetime模块和Calendar模块用法实例分析
2019/04/15 Python
Python3实现二叉树的最大深度
2019/09/30 Python
python实现WebSocket服务端过程解析
2019/10/18 Python
解决jupyter notebook import error但是命令提示符import正常的问题
2020/04/15 Python
如何用Python编写一个电子考勤系统
2021/02/08 Python
详解Python中openpyxl模块基本用法
2021/02/23 Python
小学作文评语大全
2014/04/21 职场文书
法学专业大学生实习自我鉴定
2014/10/05 职场文书
灵魂歌王观后感
2015/06/17 职场文书
感恩教师节主题班会
2015/08/12 职场文书
男方家长婚礼答谢词
2015/09/29 职场文书
残联2016年全国助残日活动总结
2016/04/01 职场文书
python 利用 PIL 将数组值转成图片的实现
2021/04/12 Python
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2021/11/11 Python