国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

$_SERVER參數HTTP_X_FORWARDED_FOR & REMOTE_ADDR與獲取IP

2024-05-04 21:48:38
字體:
來源:轉載
供稿:網友

1.REMOTE_ADDR:瀏覽當前頁面的用戶計算機的ip地址 2.HTTP_X_FORWARDED_FOR:瀏覽當前頁面的用戶計算機的網關 3.HTTP_CLIENT_IP:客戶端的ip 

在PHP 中使用 $_SERVER["REMOTE_ADDR"] 來取得客戶端的 IP 地址,但如果客戶端是使用代理服務器來訪問,那取到的就是代理服務器的 IP 地址,而不是真正的客戶端 IP 地址。要想透過代理服務器取得客戶端的真實 IP 地址,就要使用 $_SERVER["HTTP_X_FORWARDED_FOR"] 來讀取.

不過要注意的事,并不是每個代理服務器都能用 $_SERVER["HTTP_X_FORWARDED_FOR"] 來讀取客戶端的真實 IP,有些用此方法讀取到的仍然是代理服務器的 IP.

還有一點需要注意的是:如果客戶端沒有通過代理服務器來訪問,那么用$_SERVER["HTTP_X_FORWARDED_FOR"] 取到的值將是空的,因此,如果要在程序中使用此方法,可以這樣處理,代碼如下:

  1. <?php 
  2. if ($_SERVER["HTTP_X_FORWARDED_FOR"]==”") 
  3.  
  4.  
  5. $user_ip=$_SERVER["REMOTE_ADDR"]; 
  6.  
  7.  
  8. else 
  9.  
  10. $user_ip=$_SERVER["HTTP_X_FORWARDED_FOR"]; 
  11. //開源代碼Vevb.com 
  12. ?> 

即:如果客戶端通過代理服務器,則取 HTTP_X_FORWARDED_FOR 的值,如果沒通過代理服務器,就取 REMOTE_ADDR 的值.

獲得客戶端真實的IP地址,代碼如下:

  1. function GetIP(){ 
  2.  
  3. if (getenv(“HTTP_CLIENT_IP”) && strcasecmp(getenv(“HTTP_CLIENT_IP”), “unknown”)) 
  4.  
  5. $ip = getenv(“HTTP_CLIENT_IP”); 
  6.  
  7. else if (getenv(“HTTP_X_FORWARDED_FOR”) && strcasecmp(getenv(“HTTP_X_FORWARDED_FOR”), “unknown”)) 
  8.  
  9. $ip = getenv(“HTTP_X_FORWARDED_FOR”); 
  10.  
  11. else if (getenv(“REMOTE_ADDR”) && strcasecmp(getenv(“REMOTE_ADDR”), “unknown”)) 
  12.  
  13. $ip = getenv(“REMOTE_ADDR”); 
  14.  
  15. else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], “unknown”)) 
  16.  
  17. $ip = $_SERVER['REMOTE_ADDR']; 
  18.  
  19. else 
  20.  
  21. $ip = “unknown”; 
  22.  
  23. return($ip); 
  24.  

獲取用戶IP地址的三個屬性的區別 (HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR) 

一、沒有使用代理服務器的情況:

REMOTE_ADDR = 您的 IP,HTTP_VIA = 沒數值或不顯示,HTTP_X_FORWARDED_FOR = 沒數值或不顯示

二、使用透明代理服務器的情況:Transparent Proxies

REMOTE_ADDR = 最后一個代理服務器 IP 

HTTP_VIA = 代理服務器 IP

HTTP_X_FORWARDED_FOR = 您的真實 IP,經過多個代理服務器時,這個值類似如下:203.98.182.163, 203.98.182.163, 203.129.72.215.

這類代理服務器還是將您的信息轉發給您的訪問對象,無法達到隱藏真實身份的目的.

三、使用普通匿名代理服務器的情況:Anonymous Proxies

REMOTE_ADDR = 最后一個代理服務器 IP 

HTTP_VIA = 代理服務器 IP

HTTP_X_FORWARDED_FOR = 代理服務器 IP,經過多個代理服務器時,這個值類似如下:203.98.182.163, 203.98.182.163, 203.129.72.215.

隱藏了您的真實IP,但是向訪問對象透露了您是使用代理服務器訪問他們的.

四、使用欺騙性代理服務器的情況:Distorting Proxies

REMOTE_ADDR = 代理服務器 IP 

HTTP_VIA = 代理服務器 IP 

HTTP_X_FORWARDED_FOR = 隨機的 IP,經過多個代理服務器時,這個值類似如下:203.98.182.163,203.98.182.163,203.129.72.215.

告訴了訪問對象您使用了代理服務器,但編造了一個虛假的隨機IP代替您的真實IP欺騙它.

五、使用高匿名代理服務器的情況:High Anonymity Proxies (Elite proxies)

REMOTE_ADDR = 代理服務器 IP

HTTP_VIA = 沒數值或不顯示

HTTP_X_FORWARDED_FOR = 沒數值或不顯示,經過多個代理服務器時,這個值類似如下:203.98.182.163,203.98.182.163,203.129.72.215.

完全用代理服務器的信息替代了您的所有信息,就象您就是完全使用那臺代理服務器直接訪問對象,代碼如下:

  1. <?php  
  2. if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])  
  3. {  
  4. $ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];  
  5. }  
  6. elseif ($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])  
  7. {  
  8. $ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];  
  9. }  
  10. elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"])  
  11. {  
  12. $ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];  
  13. }  
  14. elseif (getenv("HTTP_X_FORWARDED_FOR"))  
  15. {  
  16. $ip = getenv("HTTP_X_FORWARDED_FOR");  
  17. }  
  18. elseif (getenv("HTTP_CLIENT_IP"))  
  19. {  
  20. $ip = getenv("HTTP_CLIENT_IP");  
  21. }  
  22. elseif (getenv("REMOTE_ADDR"))  
  23. {  
  24. $ip = getenv("REMOTE_ADDR");  
  25. }  
  26. else  
  27. {  
  28. $ip = "Unknown";  
  29. }  
  30. echo "你的IP:".$ip ;  
  31. ?> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 明星| 永善县| 龙江县| 永修县| 绥滨县| 交口县| 巍山| 东海县| 德令哈市| 灵石县| 全州县| 千阳县| 长治市| 廊坊市| 厦门市| 饶河县| 松阳县| 陆丰市| 青海省| 巴彦淖尔市| 安达市| 广昌县| 温宿县| 巴青县| 清水河县| 潮州市| 小金县| 东辽县| 大化| 东乡族自治县| 育儿| 历史| 凤凰县| 得荣县| 玛多县| 天水市| 淳安县| 古交市| 扶绥县| 铜梁县| 贡山|