您好,登錄后才能下訂單哦!
這篇文章主要講解了“php怎么獲得用戶ip地址”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“php怎么獲得用戶ip地址”吧!
REMOTE_ADDR只能獲取訪問(wèn)者本地連接中設(shè)置的IP,如某大學(xué)校園網(wǎng)中自己設(shè)置的10.X.XXX.XXX系列IP,而這個(gè)函數(shù)獲取的是局域網(wǎng)網(wǎng)關(guān)出口的IP地址,如果訪問(wèn)者使用代理服務(wù)器,將不獲取代理服務(wù)器的IP,而是獲取訪問(wèn)者網(wǎng)關(guān)的真實(shí)IP。如果將這個(gè)函數(shù)應(yīng)用到限IP訪問(wèn)的網(wǎng)頁(yè)中,別人即使通過(guò)限IP訪問(wèn)段中的代理服務(wù)器,也不能訪問(wèn)該頁(yè)面。
下面提供一個(gè)函數(shù):
復(fù)制代碼 代碼如下:
<?php
// 定義一個(gè)函數(shù)getIP()
function getIP()
{
global $ip;
if (getenv("HTTP_CLIENT_IP"))
$ip = getenv("HTTP_CLIENT_IP");
else if(getenv("HTTP_X_FORWARDED_FOR"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if(getenv("REMOTE_ADDR"))
$ip = getenv("REMOTE_ADDR");
else
$ip = "Unknow";
return $ip;
}
// 使用方法:
echo getIP();
?>
getenv("REMOTE_ADDR")用來(lái)取得客戶端的 IP 地址,但如果客戶端是使用代理服務(wù)器來(lái)訪問(wèn),那取到的就是代理服務(wù)器的 IP 地址,而不是真正的客戶端 IP 地址。要想透過(guò)代理服務(wù)器取得客戶端的真實(shí) IP 地址,就要使用 getenv("HTTP_X_FORWARDED_FOR") 來(lái)讀取。
但是如果客戶端沒(méi)有通過(guò)代理服務(wù)器來(lái)訪問(wèn),那么用getenv("HTTP_X_FORWARDED_FOR") 取到的值將是空的。
復(fù)制代碼 代碼如下:
else if(getenv("HTTP_X_FORWARDED_FOR"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
表示如果getenv("HTTP_X_FORWARDED_FOR") 取到的值存在不為空(即客戶端使用代理服務(wù)器的情況下),則變量$ip等于getenv("HTTP_X_FORWARDED_FOR") 取到的真實(shí)IP值。
如果上面的else if(getenv("HTTP_X_FORWARDED_FOR"))取得的值為空(即沒(méi)有使用代理服務(wù)器),則不會(huì)執(zhí)行下面的$ip = getenv("HTTP_X_FORWARDED_FOR");這一行語(yǔ)句。
這種情況下已經(jīng)確認(rèn)客戶端沒(méi)有使用代理服務(wù)器,從而通過(guò)
復(fù)制代碼 代碼如下:
else if(getenv("REMOTE_ADDR"))
$ip = getenv("REMOTE_ADDR");
這兩行語(yǔ)句獲得客戶端的IP地址也是真實(shí)的IP地址。
感謝各位的閱讀,以上就是“php怎么獲得用戶ip地址”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)php怎么獲得用戶ip地址這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。