很多時候我們需要獲取客戶端的訪問ip,
// ip位址合法驗證
$long = sprintf("%u", ip2long($ip));
$ip = $long ? array($ip, $long) : array('0.0.0.0', 0);
return $ip[$type];
}一、如果沒有使用**伺服器,
remote_addr
= 客戶端iphttp_x_forwarded_for
= 沒數值或不顯示
$ip = $_server['remote_addr'];
二、使用透明**,
remote_addr
= 最後乙個**伺服器 ip
http_x_forwarded_for
= 客戶端真實 ip (經過多個**伺服器時,這個值類似:221.5.252.160, 203.98.182.163, 203.129.72.215)
這類**還會將客戶真實ip傳送到請求物件,無法隱藏真實ip。
$ip = $_server['http_x_forwarded_for'];
需要在nginx配置
三、使用普通匿名**伺服器,
remote_addr
= 最後乙個**伺服器 ip
http_x_forwarded_for
= **伺服器 ip (經過多個**伺服器時,這個值類似:203.98.182.163, 203.98.182.163, 203.129.72.215)
這樣就隱藏了客戶端的真實ip,但伺服器會知道客戶端是通過**伺服器去訪問的。
四、使用欺騙性**伺服器,
remote_addr
= **伺服器 ip
http_x_forwarded_for
= 隨機的 ip(經過多個**伺服器時,這個值類似:220.4.251.159, 203.98.182.163, 203.129.72.215)
伺服器可以識別到時通過**伺服器訪問的,但傳送給目標伺服器的是虛假ip。
五、使用高匿名**,
remote_addr
= **伺服器 iphttp_x_forwarded_for
= 沒數值或不顯示
使用這種**時,不同瀏覽器不同裝置會返回不同的ip頭資訊,因此php使用$_server["remote_addr"]
、$_server["http_x_forwarded_for"]
獲取的值可能是空值也可能是「unknown
」值。
php獲取ip**如下:
獲取客戶端真實IP
server http x real ip nginx 模式下,獲取客戶端真實ip server http client ip 端的 有可能存在,可偽造 server http x forwarded for 使用者是在哪個ip使用的 有可能存在,也可以偽造 server http cdn src ...
獲取客戶端真實IP
在jsp裡,獲取客戶端的ip位址的方法是 request.getremoteaddr 這種方法在大部分情況下都是有效的。但是在通過了 apache,nagix等反向 軟體就不能獲取到客戶端的真實ip位址了。如果使用了反向 軟體,用 request.getremoteaddr 經過 以後,由於在客戶端...
獲取客戶端使用者真實ip
通常通過request.servervariables remote addr 或 request.userhostaddress 來獲取客戶端ip。如果在客戶端使用了 伺服器或在伺服器前加了反向 伺服器,獲取的就是 伺服器的位址了,無法獲取使用者真實ip。怎麼獲取呢?public static s...