使用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文件下载类
Dec 06 PHP
一个PHP模板,主要想体现一下思路
Dec 25 PHP
php面向对象的方法重载两种版本比较
Sep 08 PHP
php 操作excel文件的方法小结
Dec 31 PHP
php输出表格的实现代码(修正版)
Dec 29 PHP
php结合表单实现一些简单功能的例子
Jun 04 PHP
php读取目录及子目录下所有文件名的方法
Oct 20 PHP
PHP中if和or运行效率对比
Dec 12 PHP
PHP函数import_request_variables()用法分析
Apr 02 PHP
PHP生成word文档的三种实现方式
Nov 14 PHP
Laravel中Facade的加载过程与原理详解
Sep 22 PHP
PHP实现网站应用微信登录功能详解
Apr 11 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
索尼SONY ICF-7600A(W)电路分析
2021/03/01 无线电
建立动态的WML站点(一)
2006/10/09 PHP
缓存技术详谈―php
2006/12/14 PHP
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
2007/05/03 PHP
百度ping方法使用示例 自动ping百度
2014/01/26 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
2014/10/16 PHP
PHP排序算法类实例
2015/06/17 PHP
php如何获取Http请求
2020/04/30 PHP
javascript的键盘控制事件说明
2008/04/15 Javascript
Firefox和IE浏览器兼容JS脚本写法小结
2008/07/07 Javascript
用Javascript评估用户输入密码的强度实现代码
2011/11/30 Javascript
javascript删除一个html元素节点的方法
2014/12/20 Javascript
简化版手机端照片预览组件
2015/04/13 Javascript
详解JavaScript函数对象
2015/11/15 Javascript
基于ExtJs在页面上window再调用Window的事件处理方法
2017/07/26 Javascript
JS中使用new Option()实现时间联动效果
2018/12/10 Javascript
星球大战与Python之间的那些事
2016/01/07 Python
分享Python开发中要注意的十个小贴士
2016/08/30 Python
Python批量查询域名是否被注册过
2017/06/21 Python
详解Python核心对象类型字符串
2018/02/11 Python
python3+mysql查询数据并通过邮件群发excel附件
2018/02/24 Python
Python数据持久化shelve模块用法分析
2018/06/29 Python
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
2019/05/21 Python
python程序 线程队列queue使用方法解析
2019/09/23 Python
如何在 Django 模板中输出 &quot;{{&quot;
2020/01/24 Python
python 多进程和协程配合使用写入数据
2020/10/30 Python
澳洲小众品牌的集合网站:BNKR
2018/02/23 全球购物
自考生毕业自我鉴定
2013/10/10 职场文书
大学生创业计划书的用途
2014/01/08 职场文书
保护母亲河倡议书
2014/04/14 职场文书
活动策划求职信模板
2014/04/21 职场文书
合作经营协议书范本
2014/09/16 职场文书
毕业设计论文评语
2014/12/31 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书
军事理论课感想
2015/08/11 职场文书
2016年教师反腐倡廉心得体会
2016/01/13 职场文书