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
PHP句法规则详解 入门学习
Nov 09 PHP
PHP将整个网站生成HTML纯静态网页的方法总结
Feb 05 PHP
利用PHP生成静态HTML文档的原理
Oct 29 PHP
基于PHP常用函数的用法详解
May 10 PHP
如何利用php array_multisort函数 对数据库结果进行复杂排序
Jun 08 PHP
php常见的魔术方法详解
Dec 25 PHP
两种php实现图片上传的方法
Jan 22 PHP
PHP入门教程之上传文件实例详解
Sep 11 PHP
php实现用户注册密码的crypt加密
Jun 08 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
Apr 27 PHP
PHP赋值的内部是如何跑的详解
Jan 13 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中使用sockets:从新闻组中获取文章
2006/10/09 PHP
浅析PHP中strlen和mb_strlen的区别
2014/08/31 PHP
PHP中常用的输出函数总结
2014/09/22 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
JavaScript获取页面上某个元素的代码
2011/03/13 Javascript
从数组中随机取x条不重复数据的JS代码
2013/12/24 Javascript
json实现前后台的相互传值详解
2015/01/05 Javascript
正则表达式优化JSON字符串的技巧
2015/12/24 Javascript
js为什么不能正确处理小数运算?
2015/12/29 Javascript
jQuery解析与处理服务器端返回xml格式数据的方法详解
2016/07/04 Javascript
jquery层级选择器(匹配父元素下的子元素实现代码)
2016/09/05 Javascript
canvas 绘制圆形时钟
2017/02/22 Javascript
详解nodejs微信公众号开发——1.接入微信公众号
2017/04/10 NodeJs
用vue构建多页面应用的示例代码
2017/09/20 Javascript
值得收藏的八个常用的js正则表达式
2018/10/19 Javascript
前端插件之Bootstrap Dual Listbox使用教程
2019/07/23 Javascript
javascript实现左右缓动动画函数
2020/11/25 Javascript
[43:14]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
Python中用Ctrl+C终止多线程程序的问题解决
2013/03/30 Python
跟老齐学Python之数据类型总结
2014/09/24 Python
Python中每次处理一个字符的5种方法
2015/05/21 Python
python通过pip更新所有已安装的包实现方法
2017/05/19 Python
python中文分词教程之前向最大正向匹配算法详解
2017/11/02 Python
浅谈Python用QQ邮箱发送邮件时授权码的问题
2018/01/29 Python
Python基于pycrypto实现的AES加密和解密算法示例
2018/04/10 Python
python+selenium实现自动抢票功能实例代码
2018/11/23 Python
浅析PyTorch中nn.Linear的使用
2019/08/18 Python
Python 实现顺序高斯消元法示例
2019/12/09 Python
Python爬虫实现模拟点击动态页面
2020/03/05 Python
HTML5之SVG 2D入门7—SVG元素的重用与引用
2013/01/30 HTML / CSS
水上运动奥特莱斯:Wasterports Outlet
2018/08/08 全球购物
2014年体育教师工作总结
2014/12/03 职场文书
婚宴新娘致辞
2015/07/28 职场文书
公司酒会致辞
2015/07/30 职场文书
2016年公司新年寄语
2015/08/17 职场文书
win11自动弹出虚拟键盘怎么关闭? Win11关闭虚拟键盘的技巧
2023/01/09 数码科技