首頁 > 後端開發 > php教程 > 如何在PHP中取得使用者的準確IP位址?

如何在PHP中取得使用者的準確IP位址?

Barbara Streisand
發布: 2024-12-17 00:47:25
原創
177 人瀏覽過

How to Get a User's Accurate IP Address in PHP?

如何在PHP 中準確地確定用戶的IP 位址

找到使用者的IP 位址PHP 中準確的IP 位址對於依賴基於IP的地理定位、詐欺的應用程式至關重要檢測或存取控制。但是,由於使用代理、負載平衡器和其他網路配置,提取正確的 IP 位址可能具有挑戰性。

IP 位址檢索的最佳實踐

雖然沒有一種方法是萬無一失的,對於最準確的方法存在普遍共識PHP:

使用$_SERVER 變數

PHP 提供了幾個可能包含IP位址的 $_SERVER 變數資訊:

  • HTTP_CLIENT_IP
  • HTTP_X_FORWARDED_FOR
  • HTTP_X_FORWARDED_FOR
  • HTTP_X_FORWARD_WARD. USTER_CLIENT_IP
  • HTTP_FORWARDED_FOR
  • HTTP_FORWARDED
  • REMOTE_ADDR
用於準確IP 檢索的最佳化程式碼

這裡是一個最佳化的程式碼片段,考慮到了所有相關的$_SERVER變數:

有關REMO​​TE_ADDR 的資格

function get_ip_address() {
    if (!empty($_SERVER['HTTP_CLIENT_IP']) && filter_var($_SERVER['HTTP_CLIENT_IP'], FILTER_VALIDATE_IP)) {
        return $_SERVER['HTTP_CLIENT_IP'];
    }

    if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $iplist = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
        foreach ($iplist as $ip) {
            if (filter_var(trim($ip), FILTER_VALIDATE_IP)) {
                return $ip;
            }
        }
    }

    return $_SERVER['REMOTE_ADDR'];
}
登入後複製
雖然REMOTE_ADDR 總體上是可靠的,但它仍然容易受到欺騙。對於需要絕對 IP 準確性的應用程序,請考慮使用更嚴格的驗證方法,例如檢查用戶端憑證或 IP 信譽資料庫。

其他注意事項

驗證IP 範圍: 使用帶有附加條件地址。

  • 驗證 IPv6 位址: 如果您期望 IPv6 流量,請修改驗證程式碼以處理 IPv6 位址。
  • 考慮代理偵測: 實作額外措施來標記和處理代理流量,因為代理可以扭曲 IP 位址檢索。

以上是如何在PHP中取得使用者的準確IP位址?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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