一、如果沒有使用代理伺服器
REMOTE_ADDR = 客戶端IP
HTTP_X_FORWARDED_FOR = 沒數值或不顯示
$ip = $_SERVER['REMOTE_ADDR'];
二、使用透明代理
REMOTE_ADDR = 最後一個代理伺服器IP
#HTTP_X_FORWARDED_FOR = 客戶端真實IP (經過多個代理伺服器時,這個值類似:221.5.252.160, 203.98.182.163,203.129.72.215)
##ip#ip ,無法隱藏真實ip。$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
三、使用普通匿名代理伺服器
REMOTE_ADDR =最後一個代理伺服器IP
代理伺服器IP (經過多個代理伺服器時,這個值類似:203.98.182.163,203.98.182.163,203.129.72.215) #ip#這樣就隱藏了客戶端的真實就隱藏了客戶端的真實)#ip ,但伺服器會知道客戶端是透過代理伺服器去存取的。
#REMOTE_ADDR =
HTTP_X_FORWARDED_FOR =
(經過多個代理伺服器時,這個值類似:220.4.251.159,203.98.182.163,203.129.72.215)
#BS訪問的,但發送給目標伺服器的是虛假ip。
五、使用高匿名代理
REMOTE_ADDR = 代理伺服器IP
###HTTP_X_FORWARDED_FOR = ###沒數值或不顯示############使用這種代理程式時,不同瀏覽器不同裝置會傳回不同的ip頭訊息,因此PHP使用$_SERVER["REMOTE_ADDR"] 、$_SERVER[" HTTP_X_FORWARDED_FOR"] 取得的值可能是空值也可能是「unknown」值。 ############PHP取得ip程式碼如下:#########public function ip() { //strcasecmp 比较两个字符,不区分大小写。返回0,>0,<0。 if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { $ip = getenv('HTTP_CLIENT_IP'); } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) { $ip = getenv('HTTP_X_FORWARDED_FOR'); } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) { $ip = getenv('REMOTE_ADDR'); } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) { $ip = $_SERVER['REMOTE_ADDR']; } $res = preg_match ( '/[\d\.]{7,15}/', $ip, $matches ) ? $matches [0] : ''; echo $res; //dump(phpinfo());//所有PHP配置信息 }
以上是php如何取得客戶端的ip位址?的詳細內容。更多資訊請關注PHP中文網其他相關文章!