使用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.ini中文版
Oct 09 PHP
php基础知识:函数基础知识
Dec 13 PHP
随时给自己贴的图片加文字的php水印
Mar 16 PHP
php环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
Mar 16 PHP
linux下为php添加curl扩展的方法
Jul 29 PHP
支持中文的php加密解密类代码
Nov 27 PHP
php中的一些数组排序方法分享
Jul 20 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
Mar 28 PHP
跟我学Laravel之请求(Request)的生命周期
Oct 15 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
Feb 03 PHP
PHP递归删除多维数组中的某个值
Apr 17 PHP
解决laravel id非自增 模型取回为0 的问题
Oct 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
用PHP和ACCESS写聊天室(四)
2006/10/09 PHP
用Simple Excel导出xls实现方法
2012/12/06 PHP
JS应用之禁止抓屏、复制、打印
2008/02/21 Javascript
网页自动跳转代码收集
2009/09/27 Javascript
script标签的 charset 属性使用说明
2010/12/04 Javascript
jQuery中创建实例与原型继承揭秘
2011/12/21 Javascript
JavaScript 常见安全漏洞和自动化检测技术
2015/08/21 Javascript
javascript:void(0)点击登录没反应怎么解决
2015/11/13 Javascript
javascript数组去重小结
2016/03/07 Javascript
Angular-Touch库用法示例
2016/12/22 Javascript
几种响应式文字详解
2017/05/19 Javascript
Angularjs中ng-repeat的简单实例
2017/08/25 Javascript
微信小程序左右滑动的实现代码
2017/12/15 Javascript
elementUI Vue 单个按钮显示和隐藏的变换功能(两种方法)
2018/09/04 Javascript
vuejs点击class变化的实例
2018/09/05 Javascript
详解微信小程序缓存--缓存时效性
2019/05/02 Javascript
深入理解JavaScript 箭头函数
2019/05/30 Javascript
Python基本数据类型详细介绍
2014/03/11 Python
Python中.py文件打包成exe可执行文件详解
2017/03/22 Python
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
关于pymysql模块的使用以及代码详解
2019/09/01 Python
postman传递当前时间戳实例详解
2019/09/14 Python
Python MOCK SERVER moco模拟接口测试过程解析
2020/04/13 Python
Python实现动态循环输出文字功能
2020/05/07 Python
HomeAway的巴西品牌:Alugue Temporada
2018/04/10 全球购物
日本热销NO.1胶原蛋白冻:Aishitoto爱希特多
2019/06/20 全球购物
Steiff台湾官网:德国金耳釦泰迪熊
2019/12/26 全球购物
幼儿园中秋节活动方案2013
2014/01/29 职场文书
座谈会主持词
2014/03/20 职场文书
大学生就业意向书范文
2014/04/01 职场文书
一年级评语大全
2014/04/23 职场文书
工商管理本科生求职信
2014/07/13 职场文书
乡镇党建工作汇报材料
2014/08/14 职场文书
中学社团活动总结
2015/05/07 职场文书
2015年行风建设工作总结
2015/05/15 职场文书
解决pytorch 损失函数中输入输出不匹配的问题
2021/06/05 Python