使用MaxMind 根據(jù)IP地址對(duì)訪問(wèn)者定位
發(fā)表時(shí)間:2024-06-04 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]有時(shí)你需要知道你的站點(diǎn)訪問(wèn)者來(lái)自哪個(gè)國(guó)家——比如如果你正打算執(zhí)行針對(duì)地理區(qū)域的廣告計(jì)劃。本文將對(duì)此方法進(jìn)行介紹。 有時(shí)你需要知道你的站點(diǎn)訪問(wèn)者來(lái)自哪個(gè)國(guó)家——比如如果你正打算執(zhí)行針對(duì)地理區(qū)域的廣告計(jì)劃。這正是象MaxMind's GeoIP一類(lèi)的工具大顯身手的地方——它可以讓你從訪問(wèn)...
有時(shí)你需要知道你的站點(diǎn)訪問(wèn)者來(lái)自哪個(gè)國(guó)家——比如如果你正打算執(zhí)行針對(duì)地理區(qū)域的廣告計(jì)劃。本文將對(duì)此方法進(jìn)行介紹。
有時(shí)你需要知道你的站點(diǎn)訪問(wèn)者來(lái)自哪個(gè)國(guó)家——比如如果你正打算執(zhí)行針對(duì)地理區(qū)域的廣告計(jì)劃。這正是象MaxMind's GeoIP一類(lèi)的工具大顯身手的地方——它可以讓你從訪問(wèn)者的IP地址輕松獲取其確切的地理位置信息。
MaxMind提供了商業(yè)數(shù)據(jù)庫(kù)和免費(fèi)數(shù)據(jù)庫(kù)。前者更為精確,精度可以達(dá)使用者所在城市信息一級(jí),而后者則只能確定國(guó)家和地區(qū)。在本文中,我們將演示免費(fèi)版的使用方法。如果你需要更多詳細(xì)信息,比如遠(yuǎn)程客戶的城市以及國(guó)家信息,你需要從MaxMind:http://www.maxmind.com購(gòu)買(mǎi)更詳細(xì)的數(shù)據(jù)庫(kù)。
起步
要使用此軟件,你必須首先下載GeoIP免費(fèi)國(guó)家信息文件:http://www.maxmind.com/app/geoip_country 并將其存放于Web服務(wù)器的某個(gè)目錄中。然后你需要選擇數(shù)據(jù)庫(kù)文件所使用的語(yǔ)言API。為簡(jiǎn)化整個(gè)過(guò)程,我們將使用純粹的PHP版本以避免其他額外的配置或設(shè)置Apache組件。請(qǐng)記住在安裝軟件到Web站點(diǎn)前閱讀軟件許可證條款: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)以訪問(wèn)GeoIP免費(fèi)國(guó)家信息數(shù)據(jù)庫(kù)(GeoIP.dat)的基本方法。示例假設(shè)PHP include和國(guó)家家信息數(shù)據(jù)庫(kù)文件都在與PHP文件本身相同的目錄中。如果示例與你的安裝不同,則需要根據(jù)需要改變路徑。
示例代碼相當(dāng)明了,在引入GeoIP PHP函數(shù)庫(kù)后,第一步即使用geoip_open()函數(shù)打開(kāi)GeoIP數(shù)據(jù)庫(kù)文件。此函數(shù)接收兩個(gè)參數(shù):數(shù)據(jù)庫(kù)文件路徑和數(shù)據(jù)庫(kù)類(lèi)型。
我們?nèi)缓笫褂糜烧{(diào)用geoip_open()返回的句柄,由此根據(jù)所給的IP地址以獲取兩字母的國(guó)家代碼及直觀的國(guó)家名稱。其中還要分別借助函數(shù)geoip_country_code_by_addr()和geoip_country_code_by_name()。二者都接收兩個(gè)參數(shù):由geoip_open()返回的句柄以及需要解析的IP地址。
一旦獲得所需信息,我們通過(guò)調(diào)用geoip_close()關(guān)閉數(shù)據(jù)庫(kù)文件。
所做的就是這么簡(jiǎn)單。