使用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+DBM的同学录程序(1)
Oct 09 PHP
PR值查询 | PageRank 查询
Dec 20 PHP
网友原创的PHP模板类代码
Sep 07 PHP
php 三维饼图的实现代码
Sep 28 PHP
7个超级实用的PHP代码片段
Jul 11 PHP
浅析PHP的ASCII码转换类
Jul 05 PHP
php发送post请求函数分享
Mar 06 PHP
php中preg_replace_callback函数简单用法示例
Jul 21 PHP
ecshop适应在PHP7的修改方法解决报错的实现
Nov 01 PHP
微信自定义分享php代码分析
Nov 24 PHP
php的4种常用运行方式详解
Dec 22 PHP
ThinkPHP中调用PHPExcel的实现代码
Apr 08 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
解析thinkphp基本配置 convention.php
2013/06/18 PHP
PHP截断标题且兼容utf8和gb2312编码
2013/09/22 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
PHP 实现缩略图
2021/03/09 PHP
JavaScript高级程序设计 阅读笔记(十七) js事件
2012/08/14 Javascript
返回顶部按钮响应滚动且动态显示与隐藏
2014/10/14 Javascript
动态加载js的方法汇总
2015/02/13 Javascript
javascript实现的固定位置悬浮窗口实例
2015/04/30 Javascript
node.js下LDAP查询实例分享
2015/09/30 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
详解NodeJS框架express的路径映射(路由)功能及控制
2017/03/24 NodeJs
node内置调试方法总结
2018/02/22 Javascript
浅谈webpack devtool里的7种SourceMap模式
2019/01/14 Javascript
vue quill editor 使用富文本添加上传音频功能
2020/01/14 Javascript
webpack.DefinePlugin与cross-env区别详解
2020/02/23 Javascript
js实现小时钟效果
2020/03/25 Javascript
JavaScript链式调用原理与实现方法详解
2020/05/16 Javascript
go和python调用其它程序并得到程序输出
2014/02/10 Python
在Python中使用列表生成式的教程
2015/04/27 Python
Django的信号机制详解
2017/05/05 Python
Python自动化运维之IP地址处理模块详解
2017/12/10 Python
解决Pycharm中import时无法识别自己写的程序方法
2018/05/18 Python
python实现屏保程序(适用于背单词)
2019/07/30 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
2020/02/18 Python
HTML5和以前HTML4的区别整理
2013/10/20 HTML / CSS
夏威夷灵感服装及配饰:Reyn Spooner
2018/09/18 全球购物
新西兰第一的行李箱网站:luggage.co.nz
2019/07/22 全球购物
年终考核评语
2014/01/19 职场文书
开学季活动策划方案
2014/02/28 职场文书
个人授权委托书范本
2014/04/03 职场文书
安全演讲稿开场白
2014/08/25 职场文书
竞选学习委员演讲稿
2014/09/01 职场文书
护士医德医风心得体会
2016/01/25 职场文书
2019学校请假条格式及范文
2019/06/25 职场文书
分享:关于学习的励志名言赏析
2019/08/16 职场文书