首頁 > 後端開發 > php教程 > PHP如何準確判斷客戶端IP位址?

PHP如何準確判斷客戶端IP位址?

Patricia Arquette
發布: 2024-12-17 05:33:25
原創
736 人瀏覽過

How Can I Accurately Determine a Client's IP Address in PHP?

在PHP 中確定客戶端的IP 位址

PHP 超全域數組$_SERVER 提供對各種伺服器相關資訊的訪問,包括客戶端的遠端資訊透過$_SERVER['REMOTE_ADDR'] 的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');
    else if(getenv('HTTP_X_FORWARDED'))
        $ipaddress = getenv('HTTP_X_FORWARDED');
    else if(getenv('HTTP_FORWARDED_FOR'))
        $ipaddress = getenv('HTTP_FORWARDED_FOR');
    else if(getenv('HTTP_FORWARDED'))
       $ipaddress = getenv('HTTP_FORWARDED');
    else if(getenv('REMOTE_ADDR'))
        $ipaddress = getenv('REMOTE_ADDR');
    else
        $ipaddress = 'UNKNOWN';
    return $ipaddress;
}
登入後複製

使用 $_SERVER 超全域陣列:

$_SERVER 陣列包含 HTTP 請求資訊。以下程式碼示範了其在取得 IP 位址方面的用途:

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'];
    else if(isset($_SERVER['HTTP_X_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
    else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
        $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_FORWARDED'];
    else if(isset($_SERVER['REMOTE_ADDR']))
        $ipaddress = $_SERVER['REMOTE_ADDR'];
    else
        $ipaddress = 'UNKNOWN';
    return $ipaddress;
}
登入後複製

兩種方法都提供相同的功能,但存取資訊的方式有所不同。

以上是PHP如何準確判斷客戶端IP位址?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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