使用 PHP 擷取使用者的 IP 位址時,有多個伺服器變數可供考慮。雖然沒有一種方法是萬無一失的,但本文探討了基於這些變數的最準確方法。
背景
$_SERVER 陣列包含許多可能提供 IP 位址資訊的標頭。然而,這些標頭的可靠性和準確性可能會根據代理配置和網路拓撲而有所不同。
常用方法
傳統上,使用以下序列來獲取用戶的IP 地址:
最佳化方法
為了提高準確度和效能,此序列已最佳化如下:
function get_ip_address() { $headers = ['HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR']; foreach ($headers as $header) { if (isset($_SERVER[$header]) && ($ip = trim($_SERVER[$header]))) { if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) { return $ip; } } } return null; }
注意
雖然這方法將檢索大多數代理背後的用戶的IP位址,需要注意的是:
附加說明
以上是PHP中如何取得最準確的用戶IP位址?的詳細內容。更多資訊請關注PHP中文網其他相關文章!