remote_addr只能獲取訪問者本地連線中設定的ip,如中南民族大學校園網中自己設定的10.x.***.***系列ip,而這個函式獲取的是區域網閘道器出口的ip位址,如民大校園網的出口ip 202.103.41.6
如果訪問者使用**伺服器,將不獲取**伺服器的ip,而是獲取訪問者閘道器的真實ip。如果將這個函式應用到限ip訪問的網頁中,別人即使通過限ip訪問段中的**伺服器,也不能訪問該頁面。
定義乙個函式getip()
function getip()
使用方法:
echo getip();
getenv("remote_addr")用來取得客戶端的 ip 位址,但如果客戶端是使用**伺服器來訪問,那取到的就是**伺服器的 ip 位址,而不是真正的客戶端 ip 位址。要想透過**伺服器取得客戶端的真實 ip 位址,就要使用 getenv("http_x_forwarded_for") 來讀取。
但是如果客戶端沒有通過**伺服器來訪問,那麼用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("remote_addr"))
$ip = getenv("remote_addr");
這兩行語句獲得客戶端的ip位址也是真實的ip位址。
Java獲取來訪者IP
在jsp裡,獲取客戶端的ip位址的方法是 request.getremoteaddr 這種方法在大部分情況下都是有效的。但是在通過了apache,squid等反向 軟體就不能獲取到客戶端的真實ip位址了。如果使用了反向 軟體,用request.getremoteaddr 方法獲取的ip位址是 127...
Java獲取來訪者IP
經過apache,squid等反向 軟體 以後,由於在客戶端和服務之間增加了中間層,因此伺服器無法直接拿到客戶端的 ip,伺服器端應用也無法直接通過 請求的位址返回給客戶端。但是在 請求的http頭資訊中,增加了x forwarded for資訊。用以跟蹤原有的客戶端ip位址和原來客戶端請求的伺服器...
tomcat 獲取訪問者真實IP
通過下面這段 可以獲取 string ip request.getheader x forwarded for if ip null ip.length 0 unknown equalsignorecase ip if ip null ip.length 0 unknown equalsignore...