首頁 > 後端開發 > php教程 > PHP取得客戶端的IP

PHP取得客戶端的IP

高洛峰
發布: 2016-10-20 13:55:54
原創
911 人瀏覽過

1.REMOTE_ADDR:瀏覽目前頁面的使用者電腦的ip位址
2.HTTP_X_FORWARDED_FOR: 瀏覽目前頁面的使用者電腦的閘道
3.HTTP_CLIENT_IP:客戶端的ip關係客戶端的IP 位址,但如果客戶端是使用代理伺服器來訪問,那麼取到的就是代理伺服器的IP 位址,而不是真正的客戶端IP 位址。若想透過代理伺服器取得客戶端的真實 IP 位址,就要使用 $_SERVER["HTTP_X_FORWARDED_FOR"] 來讀取。

不過要注意的事,並不是每個代理伺服器都能用 $_SERVER["HTTP_X_FORWARDED_FOR"] 來讀取客戶端的真實 IP,有些用此方法讀取到的仍然是代理伺服器的 IP。

還有一點要注意的是:如果客戶端沒有透過代理伺服器來訪問,那麼用$_SERVER["HTTP_X_FORWARDED_FOR"] 取到的值將是空的。

/**
 * 获取客户端IP
 * @return string
 */
function get_client_ip()
{
    $realip = "";
    if ($_SERVER['HTTP_X_FORWARDED_FOR'] && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_X_FORWARDED_FOR']))
    {
        $realip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else if ($_SERVER['HTTP_CLIENT_IP']  && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP']))
    {
        $realip = $_SERVER['HTTP_CLIENT_IP'];
    }
    else if($_SERVER['REMOTE_ADDR'] && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP']))
    {
        $realip = $_SERVER['REMOTE_ADDR'];
    }

    return $realip;
}
登入後複製

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