ThinkPHP3 1快速入門(21)IP位址定位

2022-04-06 15:32:49 字數 1799 閱讀 9612

可以在官網的**ip定位擴充套件類庫,或者**擴充套件包(裡面也已經包含該擴充套件類了。如果是單獨**的上傳類庫,把解壓後的iplocation.class.php 放入thinkphp/extend/library/org/net/(如果沒有請手動建立)目錄下面。

如果你僅僅需要獲取使用者訪問的ip位址,那麼直接使用系統內建的get_client_ip函式即可,該函式是thinkphp標準模式內建方法,可以直接使用,比php內建的系統變數$_server['http_client_ip']具有更好的相容性,用法: $ip=get_client_ip();

複製**

get_client_ip支援ip位址的多種情況檢測和合法性驗證,返回值就是獲取到的ip位址,如果獲取到的ip位址非法,將返回0.0.0.0。

如果需要,也可以返回ipv4位址數字,例如: $ip=get_client_ip(1);

複製**

返回的結果可能類似於: 2130706433

複製**

可用於位址範圍和比較。

僅僅獲取ip位址並不能完全滿足應用的需求,只能記錄下來用於日後的日誌分析需要,ip位址定位功能可以讓你獲取使用者的所在區域。要使用ip定位功能,除了需要iplocation擴充套件類庫之外,還需要ip位址庫檔案,由於thinkphp預設採用utf8編碼,因此最好是utf8格式的ip位址庫檔案,如果是純真gbk編碼的ip位址庫檔案,則需要對獲取結果進行編碼轉換(下面會提到),可以在這裡**utf8編碼的位址庫檔案:

解壓後的位址庫檔案utfwry.dat放入iplocation擴充套件類庫所在目錄下面即可。

使用方法: import('org.net.iplocation');//匯入iplocation類 $ip=newiplocation();//例項化類 $location=$ip->getlocation('218.79.93.194');//獲取某個ip位址所在的位置

複製**

返回的location變數是乙個陣列,包括: $location['ip']//ip位址 $location['beginip']//使用者ip所在範圍的開始位址 $location['endip']//使用者ip所在範圍的結束位址 $location['country']//所在國家或者地區 $location['area']//所在區域

複製**

通常,我們要獲取ip定位的話,只需要取country和area資訊: $info=$location['country'].$location['area'];

複製**

如果你使用的ip位址庫檔案不是utfwry.dat(注意在linux下面檔名的大小寫也需要一致)的話,我們需要在例項化iplocation類的時候傳入位址庫檔名,例如: $ip=newiplocation('myipwry.dat');//傳入ip位址庫檔名

複製**

如果你的ip位址庫是gbk編碼的話,需要對返回結果進行編碼轉換。例如: $info=iconv('gbk','utf-8',$location['country'].$location['area']);

複製**

如果呼叫getlocation方法的時候沒有傳入任何引數,系統會自動呼叫上面的get_client_ip函式獲取當前所在ip位址: $location=$ip->getlocation();

複製**

也可以支援傳入網域名稱來自動獲取ip位址 import('org.net.iplocation');//匯入iplocation類 $ip=newiplocation();//例項化類 $area=$ip->getlocation('www.thinkphp.cn');//獲取網域名稱伺服器所在的位置 dump($area);

複製**

執行結果輸出:

ThinkPHP3 1快速入門(10)快取

在專案中,合理的使用快取對效能有較大的幫助。thinkphp提供了方便的快取方式,包括資料快取 靜態快取和查詢快取等,支援包括檔案方式 apc db memcache shmop sqlite redis eaccelerator和xcache在內的動態資料快取型別,以及可定製的靜態快取規則,並提供...

ThinkPHP3 1快速入門(9)變數輸出

這一篇我們來詳細了解下如何在模板中使用標籤輸出模板變數。變數輸出的方法很簡單,例如,在控制器中我們給模板變數賦值 name thinkphp this assign name name this display 複製 然後就可以在模板中使用 hello,複製 模板編譯後的結果就是 hello,複製 ...

ThinkPHP3 1快速入門(15)模板布局

thinkphp的模板引擎內建了布局模板功能支援,可以方便的實現模板布局以及布局巢狀功能。有三種布局模板的支援方式 這種方式僅需在專案配置檔案中新增相關的布局模板配置,就可以簡單實現模板布局功能,比較適用於全站使用相同布局的情況,需要配置開啟layout on 引數 預設不開啟 並且設定布局入口檔名...