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 相关文章推荐
phpMyAdmin 安装教程全攻略
Mar 19 PHP
解析php php_openssl.dll的作用
Jul 01 PHP
限制ckeditor上传图片文件大小的方法
Nov 15 PHP
php实现编辑和保存文件的方法
Jul 20 PHP
PHP读取PPT文件的方法
Dec 10 PHP
WordPress中用于获取及自定义头像图片的PHP脚本详解
Dec 17 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
Mar 18 PHP
Yii的Srbac插件用法详解
Jul 14 PHP
PHP实现的网站目录扫描索引工具
Sep 08 PHP
PHP XML和数组互相转换详解
Oct 26 PHP
php中this关键字用法分析
Dec 07 PHP
Yii框架Session与Cookie使用方法示例
Oct 14 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
桌面中心(二)数据库写入
2006/10/09 PHP
用文本文件制作留言板提示(上)
2006/10/09 PHP
PHP设计模式之结构模式的深入解析
2013/06/13 PHP
set_exception_handler函数在ThinkPHP中的用法
2014/10/31 PHP
Laravel 框架控制器 Controller原理与用法实例分析
2020/04/14 PHP
在修改准备发的批量美化select+可修改select时,在非IE下发现了几个问题
2007/01/09 Javascript
JavaScript读取中文cookie时的乱码问题的解决方法
2009/10/14 Javascript
捕获和分析JavaScript Error的方法
2014/03/25 Javascript
js实现回放拖拽轨迹从过程上进行分析
2014/06/26 Javascript
D3.js 从P元素的创建开始(显示可加载数据)
2014/10/30 Javascript
js中confirm实现执行操作前弹出确认框的方法
2014/11/01 Javascript
JavaScript驾驭网页-CSS与DOM
2016/03/24 Javascript
微信小程序实现实时圆形进度条的方法示例
2017/02/24 Javascript
js实现返回顶部效果
2017/03/10 Javascript
基于AngularJS实现表单验证功能
2017/07/28 Javascript
Vue.js通用应用框架-Nuxt.js的上手教程
2017/12/25 Javascript
vue-router项目实战总结篇
2018/02/11 Javascript
解决Layui中templet中a的onclick参数传递的问题
2019/09/20 Javascript
vue实现在v-html的html字符串中绑定事件
2019/10/28 Javascript
javascript设计模式 ? 迭代器模式原理与用法实例分析
2020/04/17 Javascript
[58:25]VP vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
用Python实现KNN分类算法
2017/12/22 Python
浅谈django model postgres的json字段编码问题
2018/01/05 Python
Django Web开发中django-debug-toolbar的配置以及使用
2018/05/06 Python
Python wxPython库Core组件BoxSizer用法示例
2018/09/03 Python
python模拟鼠标点击和键盘输入的操作
2019/08/04 Python
Softmax函数原理及Python实现过程解析
2020/05/22 Python
python3 中使用urllib问题以及urllib详解
2020/08/03 Python
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
什么是数据抽象
2016/11/26 面试题
abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?
2012/10/15 面试题
自我鉴定200字
2013/10/28 职场文书
房屋出售协议书
2014/04/10 职场文书
法律专业求职信
2014/05/24 职场文书
2014年维修工作总结
2014/11/22 职场文书
2014年除四害工作总结
2014/12/06 职场文书