在PHP 中取得客戶端IP 位址:深入研究差異
儘管廣泛使用$_SERVER['REMOTE_ADDR'] 進行檢索客戶的IP 位址,人們對其準確性產生了擔憂。為了解決這個問題,讓我們探索使用額外伺服器變數的替代方法。
使用getenv()
getenv() 函數允許存取環境變量,例如客戶端的IP位址:
function get_client_ip() { $ipaddress = ''; if (getenv('HTTP_CLIENT_IP')) $ipaddress = getenv('HTTP_CLIENT_IP'); else if(getenv('HTTP_X_FORWARDED_FOR')) $ipaddress = getenv('HTTP_X_FORWARDED_FOR'); // ... Further checks for other server variables omitted else $ipaddress = 'UNKNOWN'; return $ipaddress; }
使用$_SERVER
另一種方法是直接透過$_SERVER 陣列存取伺服器變數:
function get_client_ip() { $ipaddress = ''; if (isset($_SERVER['HTTP_CLIENT_IP'])) $ipaddress = $_SERVER['HTTP_CLIENT_IP']; else if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR']; // ... Further checks for other server variables omitted else $ipaddress = 'UNKNOWN'; return $ipaddress; }
為什麼會出現差異?
各種方法取得的IP位址之間可能會因以下因素而產生差異:如:
為了確保最高精確度,建議在決定客戶端 IP 位址時考慮多個伺服器變數。
以上是PHP如何準確取得客戶端IP位址?的詳細內容。更多資訊請關注PHP中文網其他相關文章!