使用MaxMind 根据IP地址对访问者定位


Posted in PHP onOctober 09, 2006

    有时你需要知道你的站点访问者来自哪个国家——比如如果你正打算执行针对地理区域的广告计划。本文将对此方法进行介绍。

    有时你需要知道你的站点访问者来自哪个国家——比如如果你正打算执行针对地理区域的广告计划。这正是象MaxMind's GeoIP一类的工具大显身手的地方——它可以让你从访问者的IP地址轻松获取其确切的地理位置信息。

    MaxMind提供了商业数据库和免费数据库。前者更为精确,精度可以达使用者所在城市信息一级,而后者则只能确定国家和地区。在本文中,我们将演示免费版的使用方法。如果你需要更多详细信息,比如远程客户的城市以及国家信息,你需要从MaxMind:http://www.maxmind.com购买更详细的数据库。

    起步

    要使用此软件,你必须首先下载GeoIP免费国家信息文件:http://www.maxmind.com/app/geoip_country 并将其存放于Web服务器的某个目录中。然后你需要选择数据库文件所使用的语言API。为简化整个过程,我们将使用纯粹的PHP版本以避免其他额外的配置或设置Apache组件。请记住在安装软件到Web站点前阅读软件许可证条款:http://www.maxmind.com/download/geoip/database/LICENSE.txt以确保你同意这些条款。

代码列表A

<?php

// include functions

include("geoip.inc");

// read GeoIP database

$handle = geoip_open("GeoIP.dat", GEOIP_STANDARD);

// map IP to country

echo "IP address 62.149.130.132 located in " . geoip_country_name_by_addr($handle, "62.149.130.132") . " (country code " . geoip_country_code_by_addr($handle, "62.149.130.132") . ")";

// close database handler
// www.knowsky.com

geoip_close($handle);

// print compulsory license notice

echo "<p> -- This product includes GeoIP data created by MaxMind, available from http://maxmind.com/ --";

?>

列表A中的代码显示了使用模块(geoip.inc)以访问GeoIP免费国家信息数据库(GeoIP.dat)的基本方法。示例假设PHP include和国家家信息数据库文件都在与PHP文件本身相同的目录中。如果示例与你的安装不同,则需要根据需要改变路径。

示例代码相当明了,在引入GeoIP PHP函数库后,第一步即使用geoip_open()函数打开GeoIP数据库文件。此函数接收两个参数:数据库文件路径和数据库类型。

我们然后使用由调用geoip_open()返回的句柄,由此根据所给的IP地址以获取两字母的国家代码及直观的国家名称。其中还要分别借助函数geoip_country_code_by_addr()和geoip_country_code_by_name()。二者都接收两个参数:由geoip_open()返回的句柄以及需要解析的IP地址。

一旦获得所需信息,我们通过调用geoip_close()关闭数据库文件。

所做的就是这么简单。

PHP 相关文章推荐
用PHP写的MySQL数据库用户认证系统代码
Mar 22 PHP
让PHP COOKIE立即生效,不用刷新就可以使用
Mar 09 PHP
PHP查询数据库中满足条件的记录条数(两种实现方法)
Jan 29 PHP
探讨file_get_contents与curl效率及稳定性的分析
Jun 06 PHP
PH P5.2至5.5、5.6的新增功能详解
Jul 14 PHP
PHP中应该避免使用同名变量(拆分临时变量)
Apr 03 PHP
php获取文件类型和文件信息的方法
Jul 10 PHP
PHP计算加权平均数的方法
Jul 16 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
Aug 01 PHP
php执行多个存储过程的方法【基于thinkPHP】
Nov 08 PHP
php实现websocket实时消息推送
Mar 30 PHP
PHP文件后缀不强制为.php方法
Mar 31 PHP
Zend公司全球首推PHP认证
Oct 09 #PHP
真正面向对象编程:PHP5.01发布
Oct 09 #PHP
PHP中实现图片的锐化
Oct 09 #PHP
在Zeus Web Server中安装PHP语言支持
Oct 09 #PHP
通过对php一些服务器端特性的配置加强php的安全
Oct 09 #PHP
一个阿拉伯数字转中文数字的函数
Oct 09 #PHP
PHP与已存在的Java应用程序集成
Oct 09 #PHP
You might like
yii2缓存Caching基本用法示例
2016/07/18 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
jQuery实现div浮动层跟随页面滚动效果
2014/02/11 Javascript
利用try-catch判断变量是已声明未声明还是未赋值
2014/03/12 Javascript
js锁屏解屏通过对$.ajax进行封装实现
2014/07/31 Javascript
JavaScript弹出窗口方法汇总
2014/08/12 Javascript
Javascript 5种方法实现过滤删除前后所有空格
2016/06/22 Javascript
AngularJS指令与控制器之间的交互功能示例
2016/12/14 Javascript
ajax图片上传,图片异步上传,更新实例
2016/12/30 Javascript
canvas绘制万花筒效果(代码分享)
2017/01/20 Javascript
移动端刮刮乐的实现方式(js+HTML5)
2017/03/23 Javascript
原生JS+Canvas实现五子棋游戏实例
2017/06/19 Javascript
jquery-file-upload 文件上传带进度条效果
2017/11/21 jQuery
python自动化测试实例解析
2014/09/28 Python
自己使用总结Python程序代码片段
2015/06/02 Python
Python 使用with上下文实现计时功能
2018/03/09 Python
Python判断有效的数独算法示例
2019/02/23 Python
Python+Selenium使用Page Object实现页面自动化测试
2019/07/14 Python
Python 离线工作环境搭建的方法步骤
2019/07/29 Python
Django中的用户身份验证示例详解
2019/08/07 Python
python连接PostgreSQL数据库的过程详解
2019/09/18 Python
PyTorch中topk函数的用法详解
2020/01/02 Python
python 基于pygame实现俄罗斯方块
2021/03/02 Python
基于CSS3特效之动画:animation的应用
2013/05/09 HTML / CSS
用CSS3的box-reflect设置文字倒影效果的方法讲解
2016/03/07 HTML / CSS
意大利团购网站:Groupon意大利
2016/10/11 全球购物
全球独特生活方式产品和礼品购物网站:AHAlife
2018/09/18 全球购物
外语专业毕业生自我评价分享
2013/10/05 职场文书
收银员的岗位职责范本
2014/02/04 职场文书
品牌推广策划方案
2014/05/28 职场文书
王兆力在市委党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
2015年超市员工工作总结
2015/05/04 职场文书
安全教育观后感
2015/06/17 职场文书
简历中的自我评价怎么写呢?
2019/04/30 职场文书
CSS3鼠标悬浮过渡缩放效果
2021/04/17 HTML / CSS
浅谈pytorch中的dropout的概率p
2021/05/27 Python