首頁 >後端開發 >PHP問題 >php取得ip不準怎麼辦

php取得ip不準怎麼辦

藏色散人
藏色散人原創
2021-02-24 10:03:573016瀏覽

php獲取ip不準確可能是用戶使用了代理,因此「$_SERVER['REMOTE_ADDR']」並不能感知用戶真實IP,其解決方法就是透過定義一個「X-Forwarded-For」的實體頭來取得真實ip。

php取得ip不準怎麼辦

本文操作環境:Windows7系統、PHP7.1、Dell G3電腦。

php 取得的ip不真實?

各位,突然想到一個東西,我們這邊不是一般$_SERVER[‘REMOTE_ADDR’];取得伺服器內網IP(很可能就是伺服器的代理IP)。那個代碼是沒有問題,然後我們使用了反向代理(nginx等),用戶也可能使用代理,因此單純的$_SERVER[‘REMOTE_ADDR’]並不能感知用戶真實IP。

但是有個參數能透過代理IP取到真實使用者的位址。對HTTp協定進行擴充。定義了一個叫做X-Forwarded-For的實體頭。

因為我們考慮這個,主要是做廣告的星友們,畢竟別人可以代理,刷量呢。

 【建議:PHP影片教學

程式碼如下:

//获取用户IP地址
    public function getIp()
    {
        if(!empty($_SERVER["HTTP_CLIENT_IP"]))
        {
            $cip = $_SERVER["HTTP_CLIENT_IP"];
        }
        else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
        {
            $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
        }
        else if(!empty($_SERVER["REMOTE_ADDR"]))
        {
            $cip = $_SERVER["REMOTE_ADDR"];
        }
        else
        {
            $cip = '';
        }
        preg_match("/[\d\.]{7,15}/", $cip, $cips);
        $cip = isset($cips[0]) ? $cips[0] : 'unknown';
        unset($cips);
        return $cip;
    }

以上是php取得ip不準怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn