使用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将时间差转换为字符串提示
Sep 07 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
Apr 19 PHP
php+jQuery.uploadify实现文件上传教程
Dec 26 PHP
PHP实现的增强性mhash函数
May 27 PHP
PHP输入流php://input实例讲解
Dec 22 PHP
详解WordPress开发中get_header()获取头部函数的用法
Jan 08 PHP
Symfony2学习笔记之插件格式分析
Mar 17 PHP
CodeIgniter 完美解决URL含有中文字符串
May 13 PHP
解析PHP之提取多维数组指定列的方法
Jan 03 PHP
php之可变变量的实例详解
Sep 12 PHP
Laravel框架实现的记录SQL日志功能示例
Jun 19 PHP
PHP应用跨时区功能的实现方法
Mar 21 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中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
2011/05/04 PHP
PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)
2012/02/05 PHP
解析php多线程下载远程多个文件
2013/06/25 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
jquery实现的图片点击滚动效果
2014/04/29 Javascript
ActiveX控件与Javascript之间的交互示例
2014/06/04 Javascript
jquery Validation表单验证使用详解
2020/09/12 Javascript
JS实现滑动菜单效果代码(包括Tab,选项卡,横向等效果)
2015/09/24 Javascript
Bootstrap实现默认导航栏效果
2020/09/21 Javascript
Svg.js实例教程及使用手册详解(一)
2016/05/16 Javascript
JS获取html元素的标记名实现方法
2016/10/08 Javascript
input输入密码变黑点密文的实现方法
2017/01/09 Javascript
javascript实现文字无缝滚动效果
2017/08/26 Javascript
利用百度地图API获取当前位置信息的实例
2017/11/06 Javascript
JavaScrip关于创建常量的知识点
2017/12/07 Javascript
解决vue-cli脚手架打包后vendor文件过大的问题
2018/09/27 Javascript
Vue 理解之白话 getter/setter详解
2019/04/16 Javascript
Layui实现主窗口和Iframe层参数传递
2019/11/14 Javascript
python操作日期和时间的方法
2014/03/11 Python
python魔法方法-属性访问控制详解
2016/07/25 Python
Python实现的随机森林算法与简单总结
2018/01/30 Python
一篇文章搞懂Python的类与对象名称空间
2018/12/10 Python
python 实现让字典的value 成为列表
2019/12/16 Python
python飞机大战pygame游戏背景设计详解
2019/12/17 Python
python爬虫库scrapy简单使用实例详解
2020/02/10 Python
美国卡车、吉普车和SUV零件网站:4 Wheel Parts
2016/11/24 全球购物
自我评价200字分享
2013/12/17 职场文书
《梅兰芳学艺》教学反思
2014/02/24 职场文书
2014年五一活动策划方案
2014/03/15 职场文书
应届毕业生自荐书
2014/06/18 职场文书
邀请函怎么写
2015/01/30 职场文书
酒店客房服务员岗位职责
2015/04/09 职场文书
病假证明模板
2015/06/19 职场文书
2019思想汇报范文
2019/05/21 职场文书
python之np.argmax()及对axis=0或者1的理解
2021/06/02 Python
如何利用golang运用mysql数据库
2022/03/13 Golang