通過PHP實現獲取訪問使用者IP

2021-10-11 04:13:33 字數 1405 閱讀 9540

在php中自帶了乙個非常的簡單的獲取ip位址的全域性變數,很多初學都獲取ip都使用它了,但是對於這些我們一般用法是滿足了,但是對於要求高精度這個函式還是不行的。

這個是最簡單的方法,對於開了透明**之類的是沒有辦法的,如果內網訪問也不能讀取正確的外網ip,不過很省力就是了:

$ip = $_server[「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位址,根據經驗得出

執行:

通過PHP實現獲取訪問使用者IP

在php中自帶了乙個非常的簡單的獲取ip位址的全域性變數,很多初學都獲取ip都使用它了,但是對於這些我們一般用法是滿足了,但是對於要求高精度這個函式還是不行的。這個是最簡單的方法,對於開了透明 之類的是沒有辦法的,如果內網訪問也不能讀取正確的外網ip,不過很省力就是了 ip server remot...

通過Nginx獲取使用者ip

x forwarded for,x real ipx forwarded for的格式 x forwarded for client,proxy1,proxy2 說明 client指使用者機的ip,或請求 的最初的機器的ip proxy1指一級 proxy2指二級 例如 x forwarded fo...

PHP獲取使用者IP位址

開發中時常需要獲取到來訪使用者的ip 位址,在php中主要通過超全域性變數 server裡邊的值來獲取,方法如下 獲取使用者ip位址 param integer type 返回型別 0 返回ip位址 1 返回ipv4位址數字 param boolean adv 是否進行高階模式獲取 有可能被偽裝 i...