使用MaxMind 根据IP地址对访问者定位

不常候你须求驾驭您的站点媒体人来自哪个国家――举个例子纵然你正希图实行针对地理区域的广告布署。本文将对此措施举行介绍。

急需专一的是maxmind是geoip数据库的提供方,
相同的时候也提供了过多语言的sample和api表明文书档案。
譬喻php,和php的geoip库是有十分大差别的,包涵使用方法,接口函数。
php官方的geoip须求配置php情况,加载geoip.dll库,并在php.ini中钦命GEOIP库地址。
maxmind提供一多元 .inc 和 .php
对处境无依附,只要永葆php,直接require后就可以使用。

突发性你须求掌握您的站点访谈者来自哪个国家――比如借使您正思忖试行针对地理区域的广告陈设。那多亏象MaxMind’s
GeoIP一类的工具大有作为的地点――它能够让您从访问者的IP地址轻巧获得其方便的地理地点新闻。

**一、GEOIP数据库

马克斯Mind提供了购买发卖数据库和免费数据库。前面一个更为标准,精度能够达使用者所在城市音信拔尖,而后人则一定要分明国家和地域。在本文中,大家将演示无偿版的施用情势。假如您须求更加的多详细音讯,比如远程顾客的都市以致国家信息,你需求从MaxMind:购买更详实的数据库。

**
细分到国家:GeoLite Country
细分到城市:GeoLite City

起步

二、php官方geoip.dll库

要接受此软件,你必需首先下载GeoIP无需付费国家音信文件:_country
并将其存放于Web服务器的某部目录中。然后您必要选拔数据库文件所使用的语言API。为简化整个经过,大家将运用纯粹的PHP版本以免止别的额外的安插或安装Apache组件。请深深记住在装置软件到Web站点前读书软件许可证条约:以承保您允许那些条目。

下载dll
修改php.ini,启用geoip库:
复制代码
代码如下:extension=php_geoip.dll
追加geoip段,内定数据库地点:
复制代码 代码如下:[geoip]
geoip.custom_directory = “D:php5.3geo”

代码列表A

测量检验代码

?php

留意geoip.dll中利用的 吉优IPCity.dat 即
GeoLiteCity.dat,用的时候注意看提醒
复制代码 代码如下:
echo geoip_country_name_by_name( “8.8.8.8” ) . “n”;
print_r( geoip_record_by_name( “8.8.8.8” ) );
echo geoip_country_name_by_name( “61.139.2.69” ). “n”;
print_r( geoip_record_by_name(  “61.139.2.69” ) );

// include functions

三、MaxMind官方php文件函数库

include(“geoip.inc”);

文书档案和演示:
修改maxmind示例中 sample.php 和 sample_city.php 中
GeoIP.dat/GeoLiteCity.dat 路线为你和煦的门道
同等目录用 “./GeoIP.dat” 或 “./GeoLiteCity.dat” 就能够。
详尽到国家
复制代码 代码如下:
include(“geoip.inc”);
$gi = geoip_open( “./GeoIP.dat”, GEOIP_STANDARD );
echo geoip_country_code_by_addr($gi, “8.8.8.8”) . “t” .
geoip_country_name_by_addr($gi, “8.8.8.8”) . “n”;
echo geoip_country_code_by_addr($gi, “61.139.2.69”) . “t” .
geoip_country_name_by_addr($gi, “61.139.2.69”) . “n”;
geoip_close($gi);

// read GeoIP database

详看见国家都会

$handle = geoip_open(“GeoIP.dat”, GEOIP_STANDARD);

复制代码 代码如下:
include(“geoipcity.inc”);
include(“geoipregionvars.php”);
$gi = geoip_open(“./GeoLiteCity.dat”,GEOIP_STANDARD);
 
$record = geoip_record_by_addr($gi,”8.8.8.8″);
print $record->country_code . ” ” . $record->country_code3 . ” ”
. $record->country_name . “n”;
print $record->region . ” ” .
$GEOIP_REGION_NAME[$record->country_code][$record->region]
. “n”;
print $record->city . “n”;
print $record->postal_code . “n”;
print $record->latitude . “n”;
print $record->longitude . “n”;
print $record->metro_code . “n”;
print $record->area_code . “n”;
print $record->continent_code . “n”;
 
print “n—–n”;
$record = geoip_record_by_addr($gi,”61.139.2.69″);
print $record->country_code . ” ” . $record->country_code3 . ” ”
. $record->country_name . “n”;
print $record->region . ” ” .
$GEOIP_REGION_NAME[$record->country_code][$record->region]
. “n”;
print $record->city . “n”;
print $record->postal_code . “n”;
print $record->latitude . “n”;
print $record->longitude . “n”;
print $record->metro_code . “n”;
print $record->area_code . “n”;
print $record->continent_code . “n”;
geoip_close($gi);

// 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//

geoip_close($handle);

// print compulsory license notice

echo “p — This product includes GeoIP data created by MaxMind,
available from –“;

?

列表A中的代码展现了使用模块以访谈GeoIP无需付费国家音讯数据库的着力方法。示比固然PHP
include和国家家新闻数据库文件都在与PHP文件自己相仿的目录中。纵然示例与你的安装差异,则必要依赖供给更动路线。

演示代码优良清楚,在引进GeoIP
PHP函数库后,第一步即利用geoip_open(卡塔尔国函数张开GeoIP数据库文件。此函数选取四个参数:数据库文件路线和数据库类型。

咱俩接下来利用由调用geoip_open(State of Qatar重临的句柄,因此依据所给的IP地址以获得两假名的国家代码及直观的国家名称。在那之中还要分别依据函数geoip_country_code_by_addr()和geoip_country_code_by_name(卡塔尔国。二者都收下几个参数:由geoip_open(卡塔尔重返的句柄以致需求解析的IP地址。

一旦获得所需新闻,大家透过调用geoip_close(卡塔尔(قطر‎关闭数据库文件。

所做的正是那般不难。

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图