多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php框架 > ThinkPHP > ThinkPHP3.1快速入門(21)IP地址定位

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

來源:程序員人生   發(fā)布時間:2014-04-28 06:13:12 閱讀次數(shù):3515次
在WEB應(yīng)用中,根據(jù)IP地址定位和記錄相關(guān)訪問日志也是非常常見的需求,在ThinkPHP中你可以輕松的實現(xiàn)IP地址獲取和定位。

獲取擴(kuò)展類庫

可以在官網(wǎng)的http://www.thinkphp.cn/extend/223.html下載IP定位擴(kuò)展類庫,或者下載擴(kuò)展包(http://www.thinkphp.cn/down/253.html)里面也已經(jīng)包含該擴(kuò)展類了。如果是單獨下載的上傳類庫,把解壓后的IpLocation.class.php 放入ThinkPHP/Extend/Library/ORG/Net/(如果沒有請手動創(chuàng)建)目錄下面。

獲取IP地址

如果你僅僅需要獲取用戶訪問的IP地址,那么直接使用系統(tǒng)內(nèi)置的get_client_ip函數(shù)即可,該函數(shù)是ThinkPHP標(biāo)準(zhǔn)模式內(nèi)置方法,可以直接使用,比PHP內(nèi)置的系統(tǒng)變量$_SERVER['HTTP_CLIENT_IP']具有更好的兼容性,用法:
$ip = get_client_ip();
get_client_ip支持IP地址的多種情況檢測和合法性驗證,返回值就是獲取到的IP地址,如果獲取到的IP地址非法,將返回0.0.0.0。
如果需要,也可以返回IPV4地址數(shù)字,例如:
$ip = get_client_ip(1);
返回的結(jié)果可能類似于:
2130706433
可用于地址范圍和比較。

IP地址定位

僅僅獲取IP地址并不能完全滿足應(yīng)用的需求,只能記錄下來用于日后的日志分析需要,IP地址定位功能可以讓你獲取用戶的所在區(qū)域。要使用IP定位功能,除了需要IpLocation擴(kuò)展類庫之外,還需要IP地址庫文件,由于ThinkPHP默認(rèn)采用UTF8編碼,因此最好是UTF8格式的IP地址庫文件,如果是純真gbk編碼的IP地址庫文件,則需要對獲取結(jié)果進(jìn)行編碼轉(zhuǎn)換(下面會提到),可以在這里下載UTF8編碼的地址庫文件:http://www.thinkphp.cn/extend/270.html
解壓后的地址庫文件UTFWry.dat放入IpLocation擴(kuò)展類庫所在目錄下面即可。
使用方法:
import('ORG.Net.IpLocation');// 導(dǎo)入IpLocation類
$Ip = new IpLocation(); // 實例化類
$location = $Ip->getlocation('218.79.93.194'); // 獲取某個IP地址所在的位置
返回的location變量是一個數(shù)組,包括:
$location['ip'] // IP地址
$location['beginip'] // 用戶IP所在范圍的開始地址
$location['endip'] // 用戶IP所在范圍的結(jié)束地址
$location['country'] // 所在國家或者地區(qū)
$location['area'] // 所在區(qū)域
通常,我們要獲取IP定位的話,只需要取country和area信息:
$info =  $location['country'].$location['area'];
如果你使用的IP地址庫文件不是UTFWry.dat(注意在Linux下面文件名的大小寫也需要一致)的話,我們需要在實例化IpLocation類的時候傳入地址庫文件名,例如:
$Ip = new IpLocation('MyIpWry.dat'); // 傳入IP地址庫文件名
如果你的IP地址庫是GBK編碼的話,需要對返回結(jié)果進(jìn)行編碼轉(zhuǎn)換。例如:
$info = iconv('gbk','utf-8',$location['country'].$location['area']);
如果調(diào)用getlocation方法的時候沒有傳入任何參數(shù),系統(tǒng)會自動調(diào)用上面的get_client_ip函數(shù)獲取當(dāng)前所在IP地址:
$location = $Ip->getlocation(); 
也可以支持傳入域名來自動獲取ip地址
import('ORG.Net.IpLocation');// 導(dǎo)入IpLocation類
$Ip = new IpLocation(); // 實例化類
$area = $Ip->getlocation('www.thinkphp.cn'); // 獲取域名服務(wù)器所在的位置
dump($area);
運行結(jié)果輸出:


如果大家使用的是純真IP地址庫,或者經(jīng)常需要變換不同的地址庫,為了方便IP定位的查詢,也可以單獨封裝一個函數(shù)來獲取位置信息,參考這里:http://www.thinkphp.cn/code/88.html
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: a级成人毛片久久 | 一区二区三区高清在线观看 | 亚洲专区一区 | 亚洲国产二区三区久久 | 亚洲区欧美区小说区图片区 | 久久久久久久国产精品 | 日本a一级片| 久久久久久免费一区二区三区 | 亚洲一区二区三区高清网 | 91刘亦菲精品福利在线 | 依人在线免费视频 | 草的爽免费视频 | 亚洲在线观看免费视频 | 亚洲精品欧美精品一区二区 | 国产福利视频一区二区三区 | 波多野结衣一级视频 | 国产aaa免费视频国产 | 免费激情视频网站 | 日本高清免费视频色www | 欧美天堂在线视频 | 看片福利| 日本高清护士xxxxx | 日韩欧美亚洲国产精品字幕久久久 | 一级做性色a爰片久久毛片 一级做性色a爰片久久毛片免费 | 久久久久欧美激情 | 国产毛片a | 在线免费视频 | 青青草原手机在线视频 | 波多野结衣 一区二区 | 羞羞影视 | 亚洲经典一区二区三区 | 在线观看美女网站 | 午夜视频免费看 | 日本一区二区在线视频 | 中文在线视频观看 | 国产在线精品一区二区不卡 | 变态 另类 国产 亚洲 | 成人夜夜嗨 | 国产精品福利一区 | 伦理免费在线观看 | 一区亚洲 |