php 獲取客戶端的真實(shí)ip
更新時(shí)間:2009年11月30日 19:21:48 作者:
獲取客戶端的真實(shí)ip的一些思路分析,不一定很對(duì),但起碼正確率要好很多。
復(fù)制代碼 代碼如下:
function GetIP(){
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
$ip = getenv("HTTP_CLIENT_IP");
else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
$ip = getenv("REMOTE_ADDR");
else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = "unknown";
return($ip);
}
regist=off的問題
if ($register_globals!=1) {
@extract($_SERVER, EXTR_SKIP);
@extract($_COOKIE, EXTR_SKIP);
@extract($_SESSION, EXTR_SKIP);
@extract($_POST, EXTR_SKIP);
@extract($_FILES, EXTR_SKIP);
@extract($_GET, EXTR_SKIP);
@extract($_ENV, EXTR_SKIP);
}
其中REMOTE_ADDR比較好理解,php手冊(cè)上有說明它是預(yù)定的變量;而HTTP_x_FORWARDED_FOR呢,在網(wǎng)上找了一些資料,是這么說的
在PHP 中使用 $_SERVER["REMOTE_ADDR"] 來取得客戶端的 IP 地址,但如果客戶端是使用代理服務(wù)器來訪問,那取到的就是代理服務(wù)器的 IP 地址,而不是真正的客戶端 IP 地址。要想透過代理服務(wù)器取得客戶端的真實(shí) IP 地址,就要使用 $_SERVER["HTTP_X_FORWARDED_FOR"] 來讀取。
不過要注意的事,并不是每個(gè)代理服務(wù)器都能用 $_SERVER["HTTP_X_FORWARDED_FOR"] 來讀取客戶端的真實(shí) IP,有些用此方法讀取到的仍然是代理服務(wù)器的 IP。
至于HTTP_CLIENT_IP,有篇貼子上說
'HTTP_CLIENT_IP'是用戶的IP,'HTTP_X_FORWARDED_FOR'是代理的IP
這些IP頭消息未必能夠取得到(因?yàn)椴煌臑g覽器不同的網(wǎng)絡(luò)設(shè)備,可能發(fā)不同的IP頭消息).所以PHP就嘗試把每個(gè)IP頭消息判斷一下,若有,則取其中的一個(gè).
您可能感興趣的文章:
相關(guān)文章
php簡(jiǎn)單定時(shí)執(zhí)行任務(wù)的實(shí)現(xiàn)方法
這篇文章主要介紹了php簡(jiǎn)單定時(shí)執(zhí)行任務(wù)的實(shí)現(xiàn)方法,涉及curl及sleep等操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02怎么在Windows系統(tǒng)中搭建php環(huán)境
因?yàn)楹芏鄍hp初學(xué)者在環(huán)境搭建這一環(huán)節(jié)就費(fèi)了很大的功夫,導(dǎo)致失去了學(xué)習(xí)php的興趣,所以小編推薦初學(xué)者使用集成軟件搭建環(huán)境,隨著學(xué)習(xí)的不斷深入,再回過頭來了解環(huán)境2013-08-08php中的Base62類(適用于數(shù)值轉(zhuǎn)字符串)
以下是對(duì)php中Base62類的用法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下2013-08-08ThinkPHP 表單自動(dòng)驗(yàn)證運(yùn)用示例
add_post事件里的代碼,就清楚要接收什么數(shù)據(jù),如何驗(yàn)證數(shù)據(jù)能夠在第一眼有個(gè)大致了解,所以總結(jié)出了此方式2014-10-10解決phpmyadmin 亂碼,支持gb2312和utf-8
解決phpmyadmin 亂碼,支持gb2312和utf-8...2006-11-11PHP自定義函數(shù)實(shí)現(xiàn)assign()數(shù)組分配到模板及extract()變量分配到模板功能示例
這篇文章主要介紹了PHP自定義函數(shù)實(shí)現(xiàn)assign()數(shù)組分配到模板及extract()變量分配到模板功能,可模擬tp框架中模板變量分配功能,涉及php基于面向?qū)ο蟮臄?shù)組賦值相關(guān)操作技巧,需要的朋友可以參考下2018-05-05