PHP獲取客戶端IP位址方式

2021-10-21 15:47:05 字數 1364 閱讀 3890

remote_addr = 客戶端ip    http_x_forwarded_for = 沒數值或不顯示$ip = $_server['remote_addr'];
remote_addr = 最後乙個**伺服器 iphttp_x_forwarded_for = 客戶端真實 ip (經過多個**伺服器時,這個值類似:221.5.252.160, 203.98.182.163, 203.129.72.215)
這類**還會將客戶真實ip傳送到請求物件,無法隱藏真實ip。

$ip = $_server['http_x_forwarded_for'];
remote_addr = 最後乙個**伺服器 iphttp_x_forwarded_for = **伺服器 ip (經過多個**伺服器時,這個值類似:203.98.182.163, 203.98.182.163, 203.129.72.215)
這樣就隱藏了客戶端的真實ip,但伺服器會知道客戶端是通過**伺服器去訪問的。

remote_addr = **伺服器 iphttp_x_forwarded_for = 隨機的 ip(經過多個**伺服器時,這個值類似:220.4.251.159, 203.98.182.163, 203.129.72.215)
伺服器可以識別到時通過**伺服器訪問的,但傳送給目標伺服器的是虛假ip。

remote_addr = **伺服器 ip       http_x_forwarded_for = 沒數值或不顯示
使用這種**時,不同瀏覽器不同裝置會返回不同的ip頭資訊,因此php使用$_server["remote_addr"]$_server["http_x_forwarded_for"]獲取的值可能是空值也可能是「unknown」值。

php獲取ip**如下:

public function ip()  else if (getenv('http_x_forwarded_for') && strcasecmp(getenv('http_x_forwarded_for'), 'unknown'))  else if (getenv('remote_addr') && strcasecmp(getenv('remote_addr'), 'unknown'))  else if (isset($_server['remote_addr']) && $_server['remote_addr'] && strcasecmp($_server['remote_addr'], 'unknown')) $res =  preg_match ( '/[\d\.]/', $ip, $matches ) ? $matches [0] : '';echo $res;//dump(phpinfo());//所有php配置資訊

PHP獲取客戶端IP位址方式

remote addr 客戶端ip http x forwarded for 沒數值或不顯示 ip server remote addr remote addr 最後乙個 伺服器 ip http x forwarded for 客戶端真實 ip 經過多個 伺服器時,這個值類似 221.5.252.1...

PHP獲取客戶端IP位址方式

remote addr 客戶端ip http x forwarded for 沒數值或不顯示 ip server remote addr remote addr 最後乙個 伺服器 iphttp x forwarded for 客戶端真實 ip 經過多個 伺服器時,這個值類似 221.5.252.16...

PHP獲取客戶端IP位址方式

remote addr 客戶端ip http x forwarded for 沒數值或不顯示 ip server remote addr remote addr 最後乙個 伺服器 iphttp x forwarded for 客戶端真實 ip 經過多個 伺服器時,這個值類似 221.5.252.16...