使用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系统流量分析的程序
Oct 09 PHP
一个php作的文本留言本的例子(六)
Oct 09 PHP
来自PHP.NET的入门教程
Oct 09 PHP
PHP面向对象学习笔记之二 生成对象的设计模式
Oct 06 PHP
php中最简单的字符串匹配算法
Dec 16 PHP
php 数组字符串搜索array_search技巧
Jul 05 PHP
php微信公众平台开发(四)回复功能开发
Dec 06 PHP
php使用curl下载指定大小的文件实例代码
Sep 30 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
Apr 09 PHP
php实现微信分享朋友链接功能
Feb 18 PHP
YII2框架使用控制台命令的方法分析
Mar 18 PHP
浅谈PHP之ThinkPHP框架使用详解
Jul 21 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
第十三节 对象串行化 [13]
2006/10/09 PHP
php对数组内元素进行随机调换的方法
2015/05/12 PHP
PHP中快速生成随机密码的几种方式
2017/04/17 PHP
使Ext的Template可以解析二层的json数据的方法
2007/12/22 Javascript
javascript replace()正则替换实现代码
2010/02/26 Javascript
JavaScript设计模式学习之“类式继承”
2015/03/12 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
2016/05/10 Javascript
Javascript类型系统之String字符串类型详解
2016/06/21 Javascript
用JS实现轮播图效果(二)
2016/06/26 Javascript
nodeJs内存泄漏问题详解
2016/09/05 NodeJs
JavaScript数据结构之优先队列与循环队列实例详解
2017/10/27 Javascript
Vue SSR 组件加载问题
2018/05/02 Javascript
深入浅析Vue.js 中的 v-for 列表渲染指令
2018/11/19 Javascript
零基础之Node.js搭建API服务器的详解
2019/03/08 Javascript
Python中处理字符串之endswith()方法的使用简介
2015/05/18 Python
Python编程中的for循环语句学习教程
2015/10/14 Python
python中异常报错处理方法汇总
2016/11/20 Python
Python自动化运维_文件内容差异对比分析
2017/12/13 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
2018/09/13 Python
python+mysql实现学生信息查询系统
2019/02/21 Python
Python Django简单实现session登录注销过程详解
2019/08/06 Python
调试Django时打印SQL语句的日志代码实例
2019/09/12 Python
Django框架下静态模板的继承操作示例
2019/11/08 Python
Python操作dict时避免出现KeyError的几种解决方法
2020/09/20 Python
详解如何使用Pytest进行自动化测试
2021/01/14 Python
CSS3的Border-radius轻松制作圆角
2012/12/24 HTML / CSS
澳大利亚家具和家居用品在线商店:Interiors Online
2018/03/05 全球购物
日本最大的彩色隐形眼镜销售网站:CharmColor
2020/09/09 全球购物
总经理助理岗位职责
2013/11/08 职场文书
会计专业毕业生求职信分享
2014/01/03 职场文书
小学二年级评语
2014/04/21 职场文书
教师节演讲稿
2014/05/06 职场文书
材料成型及控制工程专业求职信
2014/06/19 职场文书
语文教师个人工作总结
2015/02/06 职场文书
黑暗中的舞者观后感
2015/06/18 职场文书
MySQL数据库表约束讲解
2022/06/21 MySQL