成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

深入分析幾種PHP獲取客戶端IP的情況

開發(fā) 后端
PHP獲取客戶端IP的情況分為:沒有使用代理服務(wù)器的情況、使用透明代理服務(wù)器的情況、使用普通匿名代理服務(wù)器的情況、使用欺騙性代理服務(wù)器的情況、使用高匿名代理服務(wù)器的情況。

在這篇文章中,我們將會為大家詳細(xì)介紹PHP獲取客戶端IP的幾種情況分析。我們在使用PHP獲取的IP可能是客戶端真實的IP,也可能是代理服務(wù)器的IP,也有可能根本取不到任何IP值。#t#

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

但只有客戶端使用“透明代理”的情況下,$_SERVER["HTTP_X_FORWARDED_FOR"] 的值才是客戶端真正的IP(如果是多層代理,該值可能是由客戶端真正IP和多個代理服務(wù)器的IP組成,由逗號“,”分隔),而在“匿名代理”、“欺騙性代理”的情況下是代理服務(wù)器的IP值(如果是多層代理,該值可能由多個代理服務(wù)器的IP組成,由逗號“,”分隔),在“高匿名代理”的情況下是空值。

關(guān)于HTTP頭信息中的REMOTE_ADDR、HTTP_FORWARDED_FOR值,我們在下文中有詳細(xì)的介紹,假設(shè)客戶端真實IP是221.5.252.160:

 

一、沒有使用代理服務(wù)器的PHP獲取客戶端IP情況:

REMOTE_ADDR = 客戶端IP
HTTP_X_FORWARDED_FOR = 沒數(shù)值或不顯示

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

REMOTE_ADDR = ***一個代理服務(wù)器 IP
HTTP_X_FORWARDED_FOR = 客戶端真實 IP (經(jīng)過多個代理服務(wù)器時,這個值類似:221.5.252.160, 203.98.182.163, 203.129.72.215)
這類代理服務(wù)器還是將客戶端真實的IP發(fā)送給了訪問對象,無法達(dá)到隱藏真實身份的目的。

三、使用普通匿名代理服務(wù)器的PHP獲取客戶端IP情況:Anonymous Proxies

REMOTE_ADDR = ***一個代理服務(wù)器 IP
HTTP_X_FORWARDED_FOR = 代理服務(wù)器 IP (經(jīng)過多個代理服務(wù)器時,這個值類似:203.98.182.163, 203.98.182.163, 203.129.72.215)
這種情況下隱藏了客戶端的真實IP,但是向訪問對象透露了客戶端是使用代理服務(wù)器訪問它們的。

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

REMOTE_ADDR = 代理服務(wù)器 IP
HTTP_X_FORWARDED_FOR = 隨機的 IP(經(jīng)過多個代理服務(wù)器時,這個值類似:220.4.251.159, 203.98.182.163, 203.129.72.215)
這種情況下同樣透露了客戶端是使用了代理服務(wù)器,但編造了一個虛假的隨機IP(220.4.251.159)代替客戶端的真實IP來欺騙它。

五、使用高匿名代理服務(wù)器的PHP獲取客戶端IP情況:High Anonymity Proxies (Elite proxies)

REMOTE_ADDR = 代理服務(wù)器 IP
HTTP_X_FORWARDED_FOR = 沒數(shù)值或不顯示

無論是REMOTE_ADDR還是HTTP_FORWARDED_FOR,這些頭消息未必能夠取得到,因為不同的瀏覽器不同的網(wǎng)絡(luò)設(shè)備可能發(fā)送不同的IP頭消息。因此PHP使用$_SERVER["REMOTE_ADDR"] 、$_SERVER["HTTP_X_FORWARDED_FOR"] 獲取的值可能是空值也可能是“unknown”值。

因此,使用PHP獲取客戶端IP的代碼可以如下:

  1. function getip() {  
  2. $unknown = 'unknown';  
  3. if ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) 
    && $_SERVER['HTTP_X_FORWARDED_FOR'] 
    && strcasecmp($_SERVER['HTTP_X_FORWARDED_FOR'], 
    $unknown) ) {  
  4. $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];  
  5. } elseif ( isset($_SERVER['REMOTE_ADDR']) 
    && $_SERVER['REMOTE_ADDR'] && 
    strcasecmp($_SERVER['REMOTE_ADDR'], $unknown) ) {  
  6. $ip = $_SERVER['REMOTE_ADDR'];  
  7. }  
  8. /*  
  9. 處理多層代理的情況  
  10. 或者使用正則方式:$ip = preg_match("/[\d\.]
    {7,15}/", $ip, $matches) ? $matches[0] : $unknown;  
  11. */  
  12. if (false !== strpos($ip, ','))  
  13. $ip = reset(explode(',', $ip));  
  14.  return $ip;  


PHP獲取客戶端IP時另外一點需注意,使用函數(shù)getenv(’HTTP_X_FORWARDED_FOR’)或getenv(’REMOTE_ADDR’) 也可以如上代碼一樣取得同樣的效果。但getenv()不支持在IIS的isapi方式下運行的PHP。

責(zé)任編輯:曹凱 來源: longlinfeng.com
相關(guān)推薦

2023-11-15 13:50:07

服務(wù)端IP

2019-10-29 05:34:34

IPJava服務(wù)器

2010-02-22 11:10:17

WCF獲取客戶端IP

2009-12-21 15:53:56

WCF獲取客戶端IP

2010-12-21 11:03:15

獲取客戶端證書

2010-02-24 16:17:09

WCF獲取客戶端IP

2018-12-19 10:31:32

客戶端IP服務(wù)器

2024-05-06 08:00:00

C#IP地址

2010-09-07 14:21:22

PPPoE協(xié)議

2022-04-12 08:30:45

TomcatWeb 應(yīng)用Servlet

2011-03-23 11:01:55

LAMP 架構(gòu)

2009-12-08 18:02:06

PHP final關(guān)鍵

2011-11-30 15:43:40

JavaJSP

2009-12-08 16:47:06

WCF IP

2010-08-31 16:29:40

DHCP客戶端

2020-12-07 06:23:48

Java內(nèi)存

2011-08-25 13:42:57

IP隧道IPIPGRE

2014-10-30 15:08:21

快速排序編程算法

2010-03-08 14:53:48

Linux分區(qū)

2023-02-01 08:13:30

Redis內(nèi)存碎片
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 羞羞色影院 | 国产精品久久久久久久久免费高清 | 久久综合av| 欧美成人一区二区 | 神马福利| 久久久国产精品 | 日韩成人免费视频 | 久热精品在线 | 91免费在线看| 亚洲经典一区 | 久久伦理电影 | 国产精品久久久久免费 | 久久久久免费 | 在线a视频网站 | 在线日韩| 黄色亚洲网站 | 成人av在线播放 | 一区二区国产精品 | 成人高潮片免费视频欧美 | 天堂一区二区三区 | 亚洲一一在线 | 蜜桃视频成人 | 国产片一区二区三区 | 亚洲视频免费观看 | 一级一级毛片免费看 | 久久av一区二区三区 | 淫片一级国产 | 日韩精品在线播放 | 在线观看免费av网站 | 性一爱一乱一交一视频 | 亚洲一区精品在线 | 国产精品一区二区三区四区五区 | av国产精品| 五月天天丁香婷婷在线中 | 久久爱黑人激情av摘花 | 国产在线一区二区三区 | 亚洲 欧美 综合 | 国产乱码久久久久久 | 国产精品一区二区视频 | 色婷婷一区二区三区四区 | 欧美第一页 |