PHP擷取用戶端IP地址講解

來源:互聯網
上載者:User

標籤: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地址講解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.