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语法(5)
Oct 09 PHP
PHP 配置open_basedir 让各虚拟站点独立运行
Nov 12 PHP
linux下删除7天前日志的代码(php+shell)
Jan 02 PHP
基于php和mysql的简单的dao类实现crud操作功能
Jan 27 PHP
使用PHP生成PDF方法详解
Jan 23 PHP
PHP5多态性与动态绑定介绍
Apr 03 PHP
PHP MSSQL 分页实例
Apr 13 PHP
微信公众号判断用户是否已关注php代码解析
Jun 24 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
Nov 14 PHP
PHP使用XMLWriter读写xml文件操作详解
Jul 31 PHP
PHP的mysqli_select_db()函数讲解
Jan 23 PHP
php慢查询日志和错误日志使用详解
Feb 27 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
PHILIPS D1835/D1875的电路分析与打理
2021/03/02 无线电
如何使用动态共享对象的模式来安装PHP
2006/10/09 PHP
建立文件交换功能的脚本(二)
2006/10/09 PHP
phpword插件导出word文件时中文乱码问题处理方案
2014/08/19 PHP
PHP stream_context_create()函数的使用示例
2015/05/12 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
2016/04/28 PHP
Javascript new关键字的玄机 以及其它
2010/08/25 Javascript
cookie.js 加载顺序问题怎么才有效
2013/07/31 Javascript
javascript显示用户停留时间的简单实例
2013/08/05 Javascript
jquery使用jxl插件导出excel示例
2014/04/14 Javascript
Javascript 运动中Offset的bug解决方案
2014/12/24 Javascript
JS中prototype的用法实例分析
2015/03/19 Javascript
微信小程序入门教程
2016/11/18 Javascript
jquery表单提交带错误信息提示效果
2017/03/09 Javascript
prototype.js简单实现ajax功能示例
2017/10/18 Javascript
详解Nuxt.js Vue服务端渲染摸索
2018/02/08 Javascript
原生JS实现的雪花飘落动画效果
2018/05/03 Javascript
vue data引入本地图片的两种方式小结
2019/11/13 Javascript
es6数组之扩展运算符操作实例分析
2020/04/25 Javascript
Python读写文件方法总结
2015/06/09 Python
Python 爬虫爬取指定博客的所有文章
2016/02/17 Python
python进阶_浅谈面向对象进阶
2017/08/17 Python
定制FileField中的上传文件名称实例
2017/08/23 Python
django最快程序开发流程详解
2019/07/19 Python
Python队列、进程间通信、线程案例
2019/10/25 Python
django实现类似触发器的功能
2019/11/15 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
2019/12/04 Python
python音频处理的示例详解
2020/12/23 Python
英国最大的经认证的有机超市:Planet Organic
2018/02/02 全球购物
大学生最新职业生涯规划书范文
2014/01/12 职场文书
让世界充满爱演讲稿
2014/05/24 职场文书
讲座通知范文
2015/04/23 职场文书
小兵张嘎观后感
2015/06/03 职场文书
Mysql Show Profile
2021/04/05 MySQL
Django+Nginx+uWSGI 定时任务的实现方法
2022/01/22 Python
什么是css原子化,有什么用?
2022/04/24 HTML / CSS