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 相关文章推荐
动态生成gif格式的图像要注意?
Oct 09 PHP
使用PHP获取网络文件的实现代码
Jan 01 PHP
探讨:使用XMLSerialize 序列化与反序列化
Jun 08 PHP
smarty内置函数section的用法
Jan 22 PHP
浅谈Laravel中的一个后期静态绑定
Aug 11 PHP
PHP实现的各类hash算法长度及性能测试实例
Aug 27 PHP
php mysql PDO 查询操作的实例详解
Sep 23 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
Mar 12 PHP
php闭包中使用use声明变量的作用域实例分析
Aug 09 PHP
php5.5使用PHPMailer-5.2发送邮件的完整步骤
Oct 14 PHP
thinkphp5+layui实现的分页样式示例
Oct 08 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
Dec 11 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
虫族 Zerg 热键控制
2020/03/14 星际争霸
一个用php3编写的简单计数器
2006/10/09 PHP
php 服务器调试 Zend Debugger 的安装教程
2009/09/25 PHP
一个简单至极的PHP缓存类代码
2015/10/23 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
2016/12/23 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
PHP二维关联数组的遍历方式(实例讲解)
2017/10/18 PHP
PHP开发实现微信退款功能示例
2017/11/25 PHP
关于Blog顶部的滚动导航条代码
2006/09/25 Javascript
JavaScript 开发中规范性的一点感想
2009/06/23 Javascript
js中的for如何实现foreach中的遍历
2014/05/31 Javascript
详解XMLHttpRequest(一)同步请求和异步请求
2016/09/14 Javascript
node.js的事件机制
2017/02/08 Javascript
基于JavaScript实现活动倒计时效果
2017/04/20 Javascript
React利用插件和不用插件实现双向绑定的方法详解
2017/07/03 Javascript
ionic2懒加载配置详解
2017/09/01 Javascript
vue代理和跨域问题的解决
2018/07/18 Javascript
Layui实现带查询条件的分页
2019/07/27 Javascript
解决vue axios跨域 Request Method: OPTIONS问题(预检请求)
2020/08/14 Javascript
关于element-ui表单中限制输入纯数字的解决方式
2020/09/08 Javascript
python中的装饰器详解
2015/04/13 Python
Python实现查找系统盘中需要找的字符
2015/07/14 Python
利用python画一颗心的方法示例
2017/01/31 Python
彻底搞懂Python字符编码
2018/01/23 Python
Python在OpenCV里实现极坐标变换功能
2019/09/02 Python
伦敦高达60%折扣的钻石珠宝商:Purely Diamonds
2018/06/24 全球购物
迟到检讨书1000字
2014/01/15 职场文书
英语故事演讲稿
2014/04/29 职场文书
信用卡工资证明格式
2014/09/13 职场文书
信用卡收入证明范本
2015/06/12 职场文书
2016年社区植树节活动总结
2016/03/16 职场文书
如何制定一份可行的计划!
2019/06/21 职场文书
Python中的套接字编程是什么?
2021/06/21 Python
JPA 通过Specification如何实现复杂查询
2021/11/23 Java/Android
Mysql 如何合理地统计一个数据库里的所有表的数据量
2022/04/18 MySQL
Java实现注册登录跳转
2022/06/16 Java/Android