標籤:turn com forward http協議 for logs 大型 .com 博文
<?php
http://www.cnblogs.com/chengmo/archive/2013/05/29/php.html (詳情請參考這篇博文)
1.‘REMOTE_ADDR‘是遠端IP,預設來自TCP串連是,用戶端的Ip。它最準確,但是只會得到直接連伺服器用戶端IP。
如果對方通過Proxy 伺服器上網,就發現。擷取到的是Proxy 伺服器IP了。
如:a->b(proxy)->c ,如果c 通過’REMOTE_ADDR’ ,只能擷取到b的IP,擷取不到a的IP了。*/
$ip=$_SERVER[‘REMOTE_ADDR‘];
echo $ip;
2.‘HTTP_X_FORWARDED_FOR‘,‘HTTP_CLIENT_IP‘ 為了能在大型網路中,擷取到最原始使用者IP,或者代理IP地址。對HTTp協議進行擴充。定義了實體頭。
HTTP_X_FORWARDED_FOR = clientip,proxy1,proxy2 所有IP用”,”分割。
HTTP_CLIENT_IP 在進階匿名代理中,這個代表了Proxy 伺服器IP。
既然是http協議擴充一個實體頭,並且這個值對於傳入端是信任的,信任傳入方按照規則格式輸入的.
X-Forwarded-For 要求標頭格式非常簡單,就這樣:
X-Forwarded-For: client, proxy1, proxy2
*/
function getIP() {
if (isset($_SERVER[‘HTTP_X_FORWARDED_FOR‘])) {
$realip = $_SERVER[‘HTTP_X_FORWARDED_FOR‘];
} elseif (isset($_SERVER[‘HTTP_CLIENT_IP‘])) {
$realip = $_SERVER[‘HTTP_CLIENT_IP‘];
} else {
$realip = $_SERVER[‘REMOTE_ADDR‘];
}
return $realip;
}
echo getIP();
?>
PHP擷取用戶端IP地址講解