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 相关文章推荐
深入解析yii权限分级式访问控制的实现(非RBAC法)
Jun 13 PHP
php中用socket模拟http中post或者get提交数据的示例代码
Aug 08 PHP
解决file_get_contents无法请求https连接的方法
Dec 17 PHP
PHP抓屏函数实现屏幕快照代码分享
Jan 02 PHP
Apache启动报错No space left on device: AH00023该怎么解决
Oct 16 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
Apr 20 PHP
PHP中header函数的用法及其注意事项详解
Jun 13 PHP
Yii核心验证器api详解
Nov 23 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
Nov 10 PHP
laravel获取不到session的三种解决办法【推荐】
Sep 16 PHP
PHP+redis实现的购物车单例类示例
Feb 02 PHP
PHP变量的作用范围实例讲解
Dec 22 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
php下使用无限生命期Session的方法
2007/03/16 PHP
php 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
2015/08/18 PHP
iOS10推送通知开发教程
2016/09/19 PHP
PHP中仿制 ecshop验证码实例
2017/01/06 PHP
纯JS实现的批量图片预览加载功能
2011/08/14 Javascript
IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性
2011/08/28 Javascript
JavaScript 判断浏览器是否支持SVG的代码
2013/03/21 Javascript
Js 去掉字符串中的空格(实现代码)
2013/11/19 Javascript
jQuery实现折线图的方法
2015/02/28 Javascript
JavaScript之Object类型介绍
2015/04/01 Javascript
基于socket.io+express实现多房间聊天
2016/03/17 Javascript
bootstrap table表格使用方法详解
2017/04/26 Javascript
JS+canvas画一个圆锥实例代码
2017/12/13 Javascript
vue使用jsonp抓取qq音乐数据的方法
2018/06/21 Javascript
ES6 fetch函数与后台交互实现
2018/11/14 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
2019/11/17 Javascript
[01:08:09]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第二局
2016/03/02 DOTA
Python实现的视频播放器功能完整示例
2018/02/01 Python
python实现人人自动回复、抢沙发功能
2018/06/08 Python
Python中的Django基本命令实例详解
2018/07/15 Python
flask入门之文件上传与邮件发送示例
2018/07/18 Python
Python 利用scrapy爬虫通过短短50行代码下载整站短视频
2018/10/29 Python
树莓派动作捕捉抓拍存储图像脚本
2019/06/22 Python
python日志模块logbook使用方法
2019/09/19 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
2020/03/09 Python
python调用私有属性的方法总结
2020/07/24 Python
为智能设备设计个性化保护套网站:caseable
2017/01/05 全球购物
总裁秘书岗位职责
2013/12/04 职场文书
电视节目策划方案
2014/05/16 职场文书
小学爱国卫生月活动总结
2014/06/30 职场文书
五四演讲稿范文
2014/09/03 职场文书
开展党的群众路线教育实践活动个人对照检查材料
2014/11/05 职场文书
实习单位指导教师评语
2014/12/30 职场文书
Kubernetes中Deployment的升级与回滚
2022/04/01 Servers
python使用pycharm安装pyqt5以及相关配置
2022/04/22 Python