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 上传文件大小限制
Jul 05 PHP
通过5个php实例细致说明传值与传引用的区别
Aug 08 PHP
微博短链接算法php版本实现代码
Sep 15 PHP
php excel reader读取excel内容存入数据库实现代码
Dec 06 PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
Jun 18 PHP
php中的boolean(布尔)类型详解
Oct 28 PHP
PHP处理Json字符串解码返回NULL的解决方法
Sep 01 PHP
Laravel框架表单验证详解
Sep 04 PHP
php 变量引用与变量销毁机制详细介绍
Dec 05 PHP
ThinkPHP5 的简单搭建和使用详解
Nov 15 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
Dec 08 PHP
laravel框架之数据库查出来的对象实现转化为数组
Oct 23 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
基于pear auth实现登录验证
2010/02/26 PHP
PHP字符编码问题之GB2312 VS UTF-8解决方法
2011/06/23 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
2014/05/08 PHP
从零开始学YII2框架(三)扩展插件yii2-gird
2014/08/20 PHP
php安全配置记录和常见错误梳理(总结)
2017/03/28 PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
2017/06/07 PHP
PHP小程序支付功能完整版【基于thinkPHP】
2019/03/26 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
2019/04/27 PHP
JQUERY操作JSON实例代码
2010/02/09 Javascript
使用jQuery时Form表单元素ID和name命名大忌
2014/03/06 Javascript
JQuery表格拖动调整列宽效果(自己动手写的)
2014/09/01 Javascript
js实现鼠标点击文本框自动选中内容的方法
2015/08/20 Javascript
Jquery实现上下移动和排序代码
2016/10/17 Javascript
Validform表单验证总结篇
2016/10/31 Javascript
概述jQuery的元素筛选
2016/11/23 Javascript
TypeScript学习之强制类型的转换
2016/12/27 Javascript
Javascript面试经典套路reduce函数查重
2017/03/23 Javascript
在vue中使用express-mock搭建mock服务的方法
2018/11/07 Javascript
nuxt.js中间件实现拦截权限判断的方法
2018/11/21 Javascript
微信小程序 弹窗输入组件的实现解析
2019/08/12 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
2020/01/21 Javascript
vue-cli4.x创建企业级项目的方法步骤
2020/06/18 Javascript
[10:28]2018DOTA2国际邀请赛寻真——VGJ.S寻梦之路
2018/08/15 DOTA
基于python的汉字转GBK码实现代码
2012/02/19 Python
Python中bisect的用法
2014/09/23 Python
Python用threading实现多线程详解
2017/02/03 Python
Python实现删除时保留特定文件夹和文件的示例
2018/04/27 Python
用Python抢火车票的简单小程序实现解析
2019/08/14 Python
Python 实现顺序高斯消元法示例
2019/12/09 Python
Python使用Tkinter实现滚动抽奖器效果
2020/01/06 Python
基于HTML5 FileSystem API的使用介绍
2013/04/24 HTML / CSS
GafasWorld西班牙:购买太阳镜、眼镜和隐形眼镜
2019/09/08 全球购物
湖南卫视在线视频媒体平台:芒果TV
2019/10/30 全球购物
计算机工程学院个人求职信
2013/10/05 职场文书
专题组织生活会发言材料
2014/10/17 职场文书
Python办公自动化之教你用Python批量识别发票并录入到Excel表格中
2021/06/26 Python