使用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 基础教程(二)
Oct 09 PHP
dedecms后台验证码总提示错误的解决方法
Mar 21 PHP
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
Jun 18 PHP
PHP 使用MySQL管理Session的回调函数详解
Jun 21 PHP
浅析PHP中的UNICODE 编码与解码
Jun 29 PHP
利用php+mcDropdown实现文件路径可在下拉框选择
Aug 07 PHP
php利用反射实现插件机制的方法
Mar 14 PHP
php结合md5实现的加密解密方法
Jan 25 PHP
Yii统计不同类型邮箱数量的方法
Oct 18 PHP
PHP面向对象程序设计之类与反射API详解
Dec 02 PHP
PHP与JavaScript针对Cookie的读写、交互操作方法详解
Aug 07 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
Mar 24 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
php 高性能书写
2010/12/11 PHP
非常实用的php弹出错误警告函数扩展性强
2014/01/17 PHP
PHP的pcntl多进程用法实例
2015/03/19 PHP
33道php常见面试题及答案
2015/07/06 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
2019/04/02 PHP
jquery的ajax从纯真网(cz88.net)获取IP地址对应地区名
2009/12/02 Javascript
js模拟类继承小例子
2010/07/17 Javascript
js实现图片放大缩小功能后进行复杂排序的方法
2012/11/08 Javascript
jQuery:节点(插入,复制,替换,删除)操作
2013/03/04 Javascript
js判断为空Null与字符串为空简写方法
2014/02/24 Javascript
javascript验证邮件地址和MX记录的方法
2015/06/16 Javascript
jQuery选择器用法实例详解
2015/12/17 Javascript
JavaScript动态添加事件之事件委托
2016/07/12 Javascript
JS判断form内所有表单是否为空的简单实例
2016/09/09 Javascript
jQuery模拟完美实现经典FLASH导航动画效果【附demo源码下载】
2016/11/09 Javascript
ES6中javascript实现函数绑定及类的事件绑定功能详解
2017/11/08 Javascript
JS获取input[file]的值并显示在页面的实现方法
2018/03/09 Javascript
微信小程序获取地理位置及经纬度授权代码实例
2019/09/18 Javascript
原生JS实现pc端轮播图效果
2020/12/21 Javascript
Python中return语句用法实例分析
2015/08/04 Python
python实现RSA加密(解密)算法
2016/02/17 Python
python3下载抖音视频的完整代码
2019/06/05 Python
django 做 migrate 时 表已存在的处理方法
2019/08/31 Python
pyqt5、qtdesigner安装和环境设置教程
2019/09/25 Python
python中的函数递归和迭代原理解析
2019/11/14 Python
如何以Winsows Service方式运行JupyterLab
2020/08/30 Python
使用HTML5加载音频和视频的实现代码
2020/11/30 HTML / CSS
La Redoute英国官网:法国时尚品牌
2017/04/27 全球购物
SportsDirect.com马来西亚:英国第一体育零售商
2018/11/21 全球购物
办理信用卡工作证明
2014/01/11 职场文书
售后服务承诺书怎么写
2014/05/21 职场文书
机械设备与数控技术专业求职信
2014/08/10 职场文书
迎七一演讲稿
2014/09/12 职场文书
个人授权委托书
2014/09/15 职场文书
Python获取百度热搜的完整代码
2021/04/07 Python
nginx rewrite功能使用场景分析
2022/05/30 Servers