溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php怎么獲得用戶ip地址

發布時間:2021-07-26 11:59:24 來源:億速云 閱讀:124 作者:chen 欄目:開發技術

這篇文章主要講解了“php怎么獲得用戶ip地址”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“php怎么獲得用戶ip地址”吧!

REMOTE_ADDR只能獲取訪問者本地連接中設置的IP,如某大學校園網中自己設置的10.X.XXX.XXX系列IP,而這個函數獲取的是局域網網關出口的IP地址,如果訪問者使用代理服務器,將不獲取代理服務器的IP,而是獲取訪問者網關的真實IP。如果將這個函數應用到限IP訪問的網頁中,別人即使通過限IP訪問段中的代理服務器,也不能訪問該頁面。

下面提供一個函數:

復制代碼 代碼如下:


<?php

// 定義一個函數getIP()
function getIP()
{
global $ip;

if (getenv("HTTP_CLIENT_IP"))
$ip = getenv("HTTP_CLIENT_IP");
else if(getenv("HTTP_X_FORWARDED_FOR"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if(getenv("REMOTE_ADDR"))
$ip = getenv("REMOTE_ADDR");
else
$ip = "Unknow";

return $ip;
}

// 使用方法:
echo getIP();

?>


getenv("REMOTE_ADDR")用來取得客戶端的 IP 地址,但如果客戶端是使用代理服務器來訪問,那取到的就是代理服務器的 IP 地址,而不是真正的客戶端 IP 地址。要想透過代理服務器取得客戶端的真實 IP 地址,就要使用 getenv("HTTP_X_FORWARDED_FOR") 來讀取。

但是如果客戶端沒有通過代理服務器來訪問,那么用getenv("HTTP_X_FORWARDED_FOR") 取到的值將是空的。

復制代碼 代碼如下:


else if(getenv("HTTP_X_FORWARDED_FOR"))
$ip = 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地址這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女