使用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中通过smtp发邮件的类,测试通过
Jan 22 PHP
PHP页面间传递参数实例代码
Jun 05 PHP
TMDPHP 模板引擎使用教程
Mar 13 PHP
PHP获取和操作配置文件php.ini的几个函数介绍
Jun 24 PHP
php生成QRcode实例
Sep 22 PHP
php中运用http调用的GET和POST方法示例
Sep 29 PHP
php格式化时间戳显示友好的时间实现思路及代码
Oct 23 PHP
php分页原理 分页代码 分页类制作教程
Sep 23 PHP
PHP读取目录树的实现方法分析
Mar 22 PHP
laravel5表单唯一验证的实例代码
Sep 30 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
Mar 24 PHP
PHP随机生成中文段落示例【测试网站内容时使用】
Apr 26 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数组函数序列之array_keys() - 获取数组键名
2011/10/30 PHP
ajax返回值中有回车换行、空格的解决方法分享
2013/10/24 PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
2020/10/01 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
JavaScript 版本自动生成文章摘要
2008/07/23 Javascript
ExtJS 工具栏 分页事件参数
2010/03/05 Javascript
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
2011/01/06 Javascript
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
Jquery:ajax实现翻页无刷新功能代码
2013/08/05 Javascript
jquery带动画效果幻灯片特效代码
2015/08/27 Javascript
通过javascript进行UTF-8编码的实现方法
2016/06/27 Javascript
JavaScript动态添加事件之事件委托
2016/07/12 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
Vue表单验证插件的制作过程
2017/04/01 Javascript
使用vuex解决刷新页面state数据消失的问题记录
2019/05/08 Javascript
JS实现继承的几种常用方式示例
2019/06/22 Javascript
LayUi使用switch开关,动态的去控制它是否被启用的方法
2019/09/21 Javascript
vue点击页面空白处实现保存功能
2019/11/06 Javascript
vue项目启动出现cannot GET /服务错误的解决方法
2020/04/26 Javascript
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
videocapture库制作python视频高速传输程序
2013/12/23 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
2018/02/24 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
2019/08/15 Python
tensorflow2.0保存和恢复模型3种方法
2020/02/03 Python
Python读取yaml文件的详细教程
2020/07/21 Python
HTML5制作3D爱心动画教程 献给女友浪漫的礼物
2014/11/05 HTML / CSS
澳大利亚领先的优质葡萄酒拍卖会:Langton’s Fine Wines
2019/03/24 全球购物
Linux如何修改文件和文件夹的权限
2012/06/27 面试题
建筑公司文秘岗位职责
2013/11/29 职场文书
银行实习的自我鉴定
2013/12/10 职场文书
20年同学聚会邀请函
2014/02/04 职场文书
《匆匆》教学反思
2014/02/22 职场文书
倡议书范文格式
2014/05/12 职场文书
纪律教育学习月活动总结
2014/08/27 职场文书
党的群众路线教育实践活动剖析材料
2014/09/30 职场文书
斗罗大陆八大特殊魂兽,龙族始祖排榜首,第五最残忍(翠魔鸟)
2022/03/18 国漫