使用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脚本的10个技巧(3)
Oct 09 PHP
PHP源码之explode使用说明
Aug 05 PHP
PHP curl 并发最佳实践代码分享
Sep 05 PHP
PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
Apr 21 PHP
PHP 之 写时复制介绍(Copy On Write)
May 13 PHP
PHP的PDO常用类库实例分析
Apr 07 PHP
php简单创建zip压缩文件的方法
Apr 30 PHP
PHP微信刮刮卡 附微信接口
Jul 22 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
Aug 15 PHP
Laravel框架在本地虚拟机快速安装的方法详解
Jun 11 PHP
基于Laravel 多个中间件的执行顺序详解
Oct 21 PHP
php 的多进程操作实践案例分析
Feb 28 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
关于手调机和数调机的选择
2021/03/02 无线电
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
2014/06/23 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
Yii框架日志操作图文与实例详解
2019/09/09 PHP
文本框的字数限制功能jquery插件
2009/11/24 Javascript
Jquery ThickBox插件使用心得(不建议使用)
2010/09/08 Javascript
js 在定义的时候立即执行的函数表达式(function)写法
2013/01/16 Javascript
JavaScript怎么判断图片是否加载完成以便获取其尺寸
2014/05/08 Javascript
JavaScript中判断页面关闭、页面刷新的实现代码
2014/08/27 Javascript
Iframe实现跨浏览器自适应高度解决方法
2014/09/02 Javascript
jQuery的ready方法详解
2014/11/27 Javascript
jQuery实现企业网站横幅焦点图切换功能实例
2015/04/30 Javascript
jQuery实现滚动切换的tab选项卡效果代码
2015/08/26 Javascript
jquery datatable服务端分页
2016/08/31 Javascript
vue表单绑定实现多选框和下拉列表的实例
2017/08/12 Javascript
微信小程序swiper组件用法实例分析【附源码下载】
2017/12/07 Javascript
Nodejs连接mysql并实现增、删、改、查操作的方法详解
2018/01/04 NodeJs
vue2中使用less简易教程
2018/03/27 Javascript
jQuery时间戳和日期相互转换操作示例
2018/12/07 jQuery
javascript验证form表单数据的案例详解
2019/03/25 Javascript
vue 监听 Treeselect 选择项的改变操作
2020/08/31 Javascript
Python isinstance判断对象类型
2008/09/06 Python
利用Python的装饰器解决Bottle框架中用户验证问题
2015/04/24 Python
Python MySQLdb Linux下安装笔记
2015/05/09 Python
django配置连接数据库及原生sql语句的使用方法
2019/03/03 Python
Python函数装饰器原理与用法详解
2019/08/16 Python
基于Python实现扑克牌面试题
2019/12/11 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
2020/03/13 Python
一款纯css3实现的鼠标悬停动画按钮
2014/12/29 HTML / CSS
酒店总经理职务说明书
2014/02/26 职场文书
高中生职业规划范文
2014/03/09 职场文书
精彩的广告词
2014/03/19 职场文书
出纳年终工作总结2014
2014/12/05 职场文书
Python如何利用正则表达式爬取网页信息及图片
2021/04/17 Python
利用Java设置Word文本框中的文字旋转方向的实现方法
2021/06/28 Java/Android
Win11无法访问设备和打印机 如何解决页面空白
2022/04/09 数码科技