使用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制作静态网站的模板框架(一)
Oct 09 PHP
main.php
Dec 09 PHP
两个强悍的php 图像处理类1
Jun 15 PHP
常见的PHP五种设计模式小结
Mar 23 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
Dec 18 PHP
php封装好的人民币数值转中文大写类
Dec 20 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
Aug 12 PHP
php基于PDO实现功能强大的MYSQL封装类实例
Feb 27 PHP
php出租房数据管理及搜索页面
May 23 PHP
Yii2框架自定义验证规则操作示例
Feb 08 PHP
PHP7 安装event扩展的实现方法
Oct 08 PHP
PHP超全局变量实现原理及代码解析
Sep 01 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简单socket服务器客户端代码实例
2015/05/18 PHP
typecho插件编写教程(一):Hello World
2015/05/28 PHP
简单谈谈PHP中strlen 函数
2016/02/27 PHP
php简单获取复选框值的方法
2016/05/11 PHP
PHP 接入支付宝即时到账功能
2016/09/18 PHP
PHP实现Redis单据锁以及防止并发重复写入
2018/04/10 PHP
php-fpm.conf配置文件中文说明详解及重要参数说明
2018/10/10 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
关于JavaScript与HTML的交互事件
2013/04/12 Javascript
jquery模拟SELECT下拉框取值效果
2013/10/23 Javascript
了不起的node.js读书笔记之node.js中的特性
2014/12/22 Javascript
JavaScript中点击事件的写法
2016/06/28 Javascript
jQuery 生成svg矢量二维码
2016/08/09 Javascript
vue基于mint-ui的城市选择3级联动的示例
2017/10/25 Javascript
node基于puppeteer模拟登录抓取页面的实现
2018/05/09 Javascript
JS实现键值对遍历json数组功能示例
2018/05/30 Javascript
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
2019/09/11 Javascript
微信小程序使用echarts获取数据并生成折线图
2019/10/16 Javascript
python基础教程之获取本机ip数据包示例
2014/02/10 Python
详解Python的Django框架中Manager方法的使用
2015/07/21 Python
Python内置函数——__import__ 的使用方法
2017/11/24 Python
Python中pygal绘制雷达图代码分享
2017/12/07 Python
python对象销毁实例(垃圾回收)
2020/01/16 Python
Python数据正态性检验实现过程
2020/04/18 Python
Django中FilePathField字段的用法
2020/05/21 Python
Html5大文件断点续传实现方法
2015/12/05 HTML / CSS
Radley英国官网:英国莱德利小狗包
2019/03/21 全球购物
你常见到的runtime exception
2016/09/05 面试题
初中同学聚会感言
2014/02/11 职场文书
森林病虫害防治方案
2014/06/02 职场文书
大学生安全责任书
2014/07/25 职场文书
无子女夫妻离婚协议书(4篇)
2014/10/20 职场文书
2014年班组工作总结
2014/11/20 职场文书
工程移交协议书
2016/03/24 职场文书
selenium.webdriver中add_argument方法常用参数表
2021/04/08 Python
MySQL中order by的执行过程
2022/06/05 MySQL