程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 使用MaxMind 根據IP地址對訪問者定位

使用MaxMind 根據IP地址對訪問者定位

編輯:關於PHP編程

    有時你需要知道你的站點訪問者來自哪個國家——比如如果你正打算執行針對地理區域的廣告計劃。本文將對此方法進行介紹。

    有時你需要知道你的站點訪問者來自哪個國家——比如如果你正打算執行針對地理區域的廣告計劃。這正是象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()關閉數據庫文件。

所做的就是這麼簡單。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved