php獲取客戶端IP和php獲取伺服器端IP

2021-08-13 16:37:05 字數 2871 閱讀 1557

1.php獲取客戶端ip

在php獲取客戶端ip時,常使用$_server["remote_addr"] 。但如果客戶端是使用**伺服器來訪問,那取到的是**伺服器的ip 位址,而不是真正的客戶端ip 位址。要想透過**伺服器取得客戶端的真實ip 位址,就要使用$_server["http_x_forwarded_for"]來讀取。

但只有客戶端使用「透明**」的情況下,$_server["http_x_forwarded_for"] 的值才是客戶端真正的ip(如果是多層**,該值可能是由客戶端真正ip和多個**伺服器的ip組成,由逗號「,」分隔);而在「匿名**」、「欺騙性**」的情況下是**伺服器的ip值(如果是多層**,該值可能由多個**伺服器的ip組成,由逗號「,」分隔);在「高匿名**」的情況下是空值。

remote_addr 是你的客戶端跟你的伺服器「握手」時候的ip。如果使用了「匿名**」,remote_addr將顯示**伺服器的ip。

http_client_ip 是**伺服器傳送的http頭。如果是「超級匿名**」,則返回none值。同樣,remote_addr也會被替換為這個**伺服器的ip。

$_server['remote_addr']; //訪問端ip(有可能是使用者,有可能是**伺服器的,也有可能是反向**伺服器的)

$_server['http_client_ip']; //**端的(有可能存在,可偽造),未成標準,不一定伺服器都實現了。

$_server['http_x_forwarded_for']; //使用者是在哪個ip使用的**(有可能存在,也可以偽造),有標準定義,用來識別經過http**後的客戶端ip位址,格式:clientip,proxy1,proxy2。詳細解釋見

。三個值區別如下:

一、沒有使用**伺服器的情況:

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。

完全用**伺服器的資訊替代了您的所有資訊,就象您就是完全使用那台**伺服器直接訪問物件。

示例**:

[php]

view plain

copy

//獲取使用者ip, 定義乙個函式getip()

}  或者  

function

getclientip()   

}  }  

}  return

$ip;  

}  

2.php獲取伺服器端ip

伺服器端ip相關的變數

a. $_server["server_name"],需要使用函式gethostbyname()獲得。這個變數無論在伺服器端還是客戶端均能正確顯示。

b. $_server["server_addr"],在伺服器端測試:127.0.0.1(這個與httpd.conf中bindaddress的設定值相關)。在客戶端測試結果正確。

[php]

view plain

copy

/*** 獲取伺服器端ip位址

* @return string

*/function

getserverip()  else

} else

return

$server_ip

;   

}  或者  

function

getserverip()   

PHP獲取客戶端IP

在php獲取客戶端ip中常使用 server remote addr 但如果客戶端是使用 伺服器來訪問,那取到的是 伺服器的 ip 位址,而不是真正的客戶端 ip 位址。要想透過 伺服器取得客戶端的真實 ip 位址,就要使用 server http x forwarded for 來讀取。但只有客戶...

PHP獲取客戶端IP

在這篇文章中,我們將會為大家詳細介紹php獲取客戶端ip的幾種情況分析。我們在使用php獲取的ip可能是客戶端真實的ip,也可能是 伺服器的ip,也有可能根本取不到任何ip值。在php獲取客戶端ip中常使用 server remote addr 但如果客戶端是使用 伺服器來訪問,那取到的是 伺服器的...

php獲取客戶端IP

方法1 function get real ip 多重 伺服器下的客戶端真實ip位址 可能偽造 如果沒有使用 此字段為空 客戶端ip 或 最後乙個 伺服器 ip return ip ip server remote addr 方法2 獲取客戶端ip位址 param integer type 返回型別...