首頁 > 後端開發 > php教程 > 如何在 PHP 中可靠地取得客戶端的 IP 位址?

如何在 PHP 中可靠地取得客戶端的 IP 位址?

DDD
發布: 2024-12-18 07:19:11
原創
303 人瀏覽過

How to Reliably Get a Client's IP Address in PHP?

在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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板