使用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 相关文章推荐
基于mysql的bbs设计(二)
Oct 09 PHP
php框架Phpbean说明
Jan 10 PHP
逐步提升php框架的性能
Jan 10 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
Nov 02 PHP
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
May 16 PHP
使用PHP导出Redis数据到另一个Redis中的代码
Mar 12 PHP
php实现获取文件mime类型的方法
Feb 11 PHP
PHP中常用的数组操作方法笔记整理
May 16 PHP
Linux下快速搭建php开发环境
Mar 13 PHP
PHP实现负载均衡session共享redis缓存操作示例
Aug 22 PHP
Laravel 数据库加密及数据库表前缀配置方法
Oct 10 PHP
php使用gearman进行任务分发操作实例详解
Feb 26 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
星际争霸任务指南——虫族
2020/03/04 星际争霸
PHP stripos()函数及注意事项的分析
2013/06/08 PHP
PHP动态编译出现Cannot find autoconf的解决方法
2014/11/05 PHP
php获取汉字拼音首字母的方法
2015/10/21 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
2015/12/31 PHP
PHP格式化MYSQL返回float类型的方法
2016/03/30 PHP
基于jquery完美拖拽,可返回拖动轨迹
2012/03/29 Javascript
js比较日期大小的方法
2015/05/12 Javascript
javascript 常见功能汇总
2015/06/11 Javascript
js实现select二级联动下拉菜单
2020/04/17 Javascript
详解JavaScript设计模式开发中的桥接模式使用
2016/05/18 Javascript
三种带箭头提示框总结实例
2016/06/14 Javascript
浅谈JS运算符&amp;&amp;和|| 及其优先级
2016/08/10 Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
2016/10/31 Javascript
JavaScript简单实现合并两个Json对象的方法示例
2017/10/16 Javascript
小程序:授权、登录、session_key、unionId的详解
2019/05/15 Javascript
Node.js中出现未捕获异常的处理方法
2020/06/29 Javascript
微信小程序实现登录注册功能
2020/12/29 Javascript
Python实现端口复用实例代码
2014/07/03 Python
python实现计算资源图标crc值的方法
2014/10/05 Python
对于Python编程中一些重用与缩减的建议
2015/04/14 Python
Python学习笔记整理3之输入输出、python eval函数
2015/12/14 Python
Python中使用Queue和Condition进行线程同步的方法
2016/01/19 Python
python快速建立超简单的web服务器的实现方法
2018/02/17 Python
详解如何在python中读写和存储matlab的数据文件(*.mat)
2018/02/24 Python
python已协程方式处理任务实现过程
2019/12/27 Python
基础的CSS3弹性盒Flexbox布局使用实例
2016/04/08 HTML / CSS
THE OUTNET美国官网:国际设计师品牌折扣网站
2017/03/07 全球购物
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
加拿大廉价机票预订网站:CheapOair.ca
2018/03/04 全球购物
2014年老干部工作总结
2014/11/21 职场文书
端午节寄语2015
2015/03/23 职场文书
新闻简讯格式及范文
2015/07/22 职场文书
关于python中模块和重载的问题
2021/11/02 Python
Golang实现可重入锁的示例代码
2022/05/25 Golang
git stash(储藏)的用法总结
2022/06/25 Servers