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开发文件系统实例讲解
Oct 09 PHP
使用 MySQL 开始 PHP 会话
Dec 21 PHP
PHP操作文件方法问答
Mar 16 PHP
PHP JS Ip地址及域名格式检测代码
Sep 27 PHP
对PHP语言认识上需要避免的10大误区
Jun 12 PHP
PHP打开和关闭文件操作函数总结
Nov 18 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
Mar 27 PHP
浅谈php中的访问修饰符private、protected、public的作用范围
Nov 20 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
Jul 20 PHP
php之可变变量的实例详解
Sep 12 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
Aug 16 PHP
PHP标准库 (SPL)――Countable用法示例
Jun 05 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
星际中一些鲜为人知的详细资料
2020/03/04 星际争霸
php实现的简单美国商品税计算函数
2015/07/13 PHP
PHP+MySql+jQuery实现的"顶"和"踩"投票功能
2016/05/21 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
tp5.1 实现setInc字段自动加1
2019/10/18 PHP
Ctrl+Enter提交内容信息
2006/06/26 Javascript
限制复选框的最大可选数
2006/07/01 Javascript
jQuery 页面载入进度条实现代码
2009/02/08 Javascript
JQuery实现的在新窗口打开链接的方法小结
2010/04/22 Javascript
jQuery中调用WebService方法小结
2011/03/28 Javascript
javascript操作referer详细解析
2014/03/10 Javascript
基于JavaScript实现购物网站商品放大镜效果
2016/09/06 Javascript
JS函数修改html的元素内容,及修改属性内容的方法
2016/10/28 Javascript
详解jquery easyui之datagrid使用参考
2016/12/05 Javascript
javascript删除html标签函数cIsHTML
2017/01/09 Javascript
Ajax跨域实现代码(后台jsp)
2017/01/21 Javascript
vue头部导航动态点击处理方法
2018/11/02 Javascript
vue计算属性computed、事件、监听器watch的使用讲解
2019/01/21 Javascript
微信小程序实现限制用户转发功能的实例代码
2020/02/22 Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
2020/06/04 Javascript
vue实现路由懒加载的3种方法示例
2020/09/01 Javascript
[07:38]2014DOTA2国际邀请赛 Newbee顺利挺进胜者组赛后专访
2014/07/15 DOTA
python中查找excel某一列的重复数据 剔除之后打印
2013/02/10 Python
Centos7 Python3下安装scrapy的详细步骤
2018/03/15 Python
TensorFlow2.1.0最新版本安装详细教程
2020/04/08 Python
Anaconda详细安装步骤图文教程
2020/11/12 Python
HTML5之SVG 2D入门13—svg对决canvas及长处和适用场景分析
2013/01/30 HTML / CSS
HTML 5.1来了 9月份正式发布 更新内容预览
2016/04/26 HTML / CSS
GAP美国官网:美国休闲时尚品牌
2016/08/26 全球购物
Sperry官网:帆船鞋创始品牌
2016/09/07 全球购物
宣传策划类求职信范文
2014/01/31 职场文书
2015年员工工作总结范文
2015/04/08 职场文书
团结主题班会
2015/08/13 职场文书
2015教师个人年度工作总结
2015/10/23 职场文书
MySQL不使用order by实现排名的三种思路总结
2021/06/02 MySQL
15个值得收藏的JavaScript函数
2021/09/15 Javascript