使用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 相关文章推荐
文章推荐系统(二)
Oct 09 PHP
一个用mysql_odbc和php写的serach数据库程序
Oct 09 PHP
PHP中的日期及时间
Nov 23 PHP
用PHP程序实现支持页面后退的两种方法
Jun 30 PHP
PHP中读取照片exif信息的方法
Aug 20 PHP
php防止恶意刷新与刷票的方法
Nov 21 PHP
PHP IDE phpstorm 常用快捷键
May 18 PHP
PHP实现微信发红包程序
Aug 24 PHP
Laravel框架实现发送短信验证功能代码
Jun 06 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
PHP标准库(PHP SPL)详解
Mar 16 PHP
laravel 解决路由除了根目录其他都404的问题
Oct 18 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中使用Oracle数据库(4)
2006/10/09 PHP
php+mysql实现数据库随机重排实例
2014/10/17 PHP
PHP中使用Imagick读取pdf并生成png缩略图实例
2015/01/21 PHP
php图片上传类 附调用方法
2016/05/15 PHP
php自动载入类用法实例分析
2016/06/24 PHP
微信公众号开发之文本消息自动回复php代码
2016/08/08 PHP
php实现xml转换数组的方法示例
2017/02/03 PHP
加载 Javascript 最佳实践
2011/10/30 Javascript
在Javascript中 声明时用&quot;var&quot;与不用&quot;var&quot;的区别
2013/04/15 Javascript
js字符串日期yyyy-MM-dd转化为date示例代码
2014/03/06 Javascript
jQuery中has()方法用法实例
2015/01/06 Javascript
NodeJs中的VM模块详解
2015/05/06 NodeJs
IE中document.createElement的iframe无法设置属性name的解决方法
2015/09/14 Javascript
javascript iframe跨域详解
2016/10/26 Javascript
完美实现js焦点轮播效果(一)
2017/03/07 Javascript
vue父组件中获取子组件中的数据(实例讲解)
2017/09/27 Javascript
vue绑定的点击事件阻止冒泡的实例
2018/02/08 Javascript
微信小程序自定义tab实现多层tab嵌套功能
2018/06/15 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
2019/03/19 jQuery
微信小程序遍历Echarts图表实现多个饼图
2019/04/25 Javascript
[43:24]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第二场 12.12
2020/12/17 DOTA
python控制台显示时钟的示例
2014/02/24 Python
Python脚本实现自动将数据库备份到 Dropbox
2017/02/06 Python
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
Python基于socket实现简单的即时通讯功能示例
2018/01/16 Python
Python 绘图库 Matplotlib 入门教程
2018/04/19 Python
Anaconda2下实现Python2.7和Python3.5的共存方法
2018/06/11 Python
Python 面试中 8 个必考问题
2018/11/16 Python
CSS实现鼠标滑过鼠标点击代码写法
2016/12/26 HTML / CSS
调用HTML5的Canvas API绘制图形的快速入门指南
2016/06/17 HTML / CSS
环境工程大学生自荐信
2013/10/21 职场文书
文秘人员工作职责
2014/01/31 职场文书
学校宣传标语
2014/06/18 职场文书
社区志愿者活动总结
2014/06/26 职场文书
长城导游词400字
2015/01/30 职场文书
2015年健康教育工作总结
2015/04/10 职场文书