PHP 獲取使用者客戶端IP的解決方案

2021-08-25 14:05:29 字數 1714 閱讀 5038

獲取客戶端ip其實不是個簡單的活兒,因為存在ip欺騙,和**問題,所以獲取客戶端的ip的真實性會打折扣的,不能百分百準確.但是我們還是盡量找乙個比較完善的獲取客戶端真正ip方法.使用php獲取ip的方法能找到很多.

function getip() elseif ( isset($_server['remote_addr']) && $_server['remote_addr'] && strcasecmp($_server['remote_addr'], $unknown) ) 

/*處理多層**的情況

或者使用正則方式:$ip = preg_match("/[\d\.]/", $ip, $matches) ? $matches[0] : $unknown;

*/if (false !== strpos($ip, ','))

$ip = reset(explode(',', $ip));

return $ip;

}

一、沒有使用**伺服器的php獲取客戶端ip情況:

remote_addr = 客戶端ip

http_x_forwarded_for = 沒數值或不顯示

二、使用透明**伺服器的情況:transparent proxies

remote_addr = 最後乙個**伺服器 ip

http_x_forwarded_for = 客戶端真實 ip (經過多個**伺服器時,這個值類似:221.5.252.160, 203.98.182.163, 203.129.72.215)

這類**伺服器還是將客戶端真實的ip傳送給了訪問物件,無法達到隱藏真實身份的目的.

三、使用普通匿名**伺服器的php獲取客戶端ip情況:anonymous proxies

remote_addr = 最後乙個**伺服器 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_x_forwarded_for = 隨機的 ip(經過多個**伺服器時,這個值類似:220.4.251.159, 203.98.182.163, 203.129.72.215)

這種情況下同樣透露了客戶端是使用了**伺服器,但編造了乙個虛假的隨機ip(220.4.251.159)代替客戶端的真實ip來欺騙它.

五、使用高匿名**伺服器的php獲取客戶端ip情況:high anonymity proxies (elite proxies)

remote_addr = **伺服器 ip

http_x_forwarded_for = 沒數值或不顯示

無論是remote_addr還是http_forwarded_for,這些頭訊息未必能夠取得到,因為不同的瀏覽器不同的網路裝置可能傳送不同的ip頭訊息.因此php使用$_server["remote_addr"] 、$_server["http_x_forwarded_for"] 獲取的值可能是空值也可能是「unknown」值.

原文出自:

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 返回型別...