在PHP 中取得客戶端IP 位址
在探索取得客戶端IP 位址的方法之前,了解為什麼只使用$_SERVER[是至關重要的'REMOTE_ADDR'] 可能會導致不正確的結果。代理、防火牆或其他中介可以更改原始 IP 位址。
要解決此問題,可以使用以下替代方法:
使用 GETENV()
getenv() 函數允許我們存取環境變數。以下函數使用它:
// Function to get client IP address 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'); //... (Other conditions omitted for brevity) else $ipaddress = 'UNKNOWN'; return $ipaddress; }
使用 $_SERVER
PHP 也提供 $_SERVER 超全域來存取伺服器變數。這是使用它的類似實作:
// Function to get client IP address 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']; //... (Other conditions omitted for brevity) else $ipaddress = 'UNKNOWN'; return $ipaddress; }
這兩個函數都考慮多個伺服器變數來取得最準確的可用 IP 位址。他們優先考慮 HTTP_CLIENT_IP 和 HTTP_X_FORWARDED_FOR 等變量,這提供了更高的可靠性。
以上是如何在 PHP 中可靠地取得客戶端的 IP 位址?的詳細內容。更多資訊請關注PHP中文網其他相關文章!