當前位置:編程學習大全網 - 源碼下載 - PHP如何獲得客戶端的真實IP

PHP如何獲得客戶端的真實IP

如果將此功能應用於IP訪問受限的網頁,則即使通過IP訪問受限段中的代理服務器,其他人也無法訪問該頁面。

這裏有壹個函數:

//定義壹個函數getIP()

函數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("遠程_ADDR "))

$ip = getenv("遠程_ ADDR ");else $ ip = " Unknow

返回$ ip}

//如何使用:

echo getIP();?& gt

getenv(“REMOTE _ ADDR”)用於獲取客戶端的IP地址,但是如果客戶端使用代理服務器訪問,那麽會獲取代理服務器的IP地址,而不是真實的客戶端IP地址。如果想通過代理服務器獲取客戶端的真實IP地址,應該使用getenv("HTTP_X_FORWARDED_FOR ")讀取。

但是,如果客戶端不通過代理服務器訪問,用getenv("HTTP_X_FORWARDED_FOR ")獲得的值將為空。

else if(getenv(" HTTP _ X _ FORWARDED _ FOR "))

$ IP = getenv(" HTTP _ X _ FORWARDED _ FOR ");

意味著如果getenv("HTTP_X_FORWARDED_FOR ")獲取的值不為空(即客戶端使用代理服務器),那麽變量$ip等於getenv("HTTP_X_FORWARDED_FOR ")獲取的真實ip值。

如果上面的else if(getenv(" http _ x _ forwarded _ for ")得到的值為空(即不使用代理服務器),下面的$ IP = getenv(" http _ x _ forwarded _ for ")將不會執行;這壹行語句。

在這種情況下,已經確認客戶端不使用代理服務器,所以通過

else if(getenv("遠程_ADDR "))

這兩行語句得到的客戶端的IP地址也是真實的IP地址。

  • 上一篇:DNF千千0912版本怎麽設置不容易掉線
  • 下一篇:印度銀行支付源代碼
  • copyright 2024編程學習大全網