国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

PHP獲取客戶端真實IP地址的方法

2020-03-22 18:44:33
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了關于PHP獲取客戶端真實IP地址的方法,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

php獲取客戶端IP地址有四種方法,這五種方法分別為REMOTE_ADDR、HTTP_CLIENT_IP、HTTP_X_FORWARDED_FOR、HTTP_VIA。

REMOTE_ADDR 是你的客戶端跟你的服務器“握手”時候的IP。如果使用了“匿名代理”,REMOTE_ADDR將顯示代理服務器的IP。
HTTP_CLIENT_IP 是代理服務器發送的HTTP頭。如果是“超級匿名代理”,則返回none值。同樣,REMOTE_ADDR也會被替換為這個代理服務器的IP。
$_SERVER['REMOTE_ADDR']; //訪問端(有可能是用戶,有可能是代理的)IP
$_SERVER['HTTP_CLIENT_IP']; //代理端的(有可能存在,可偽造)
$_SERVER['HTTP_X_FORWARDED_FOR']; //用戶是在哪個IP使用的代理(有可能存在,也可以偽造)

三個值區別如下:

一、沒有使用代理服務器的情況:

REMOTE_ADDR = 您的 IP
HTTP_VIA = 沒數值或不顯示
HTTP_X_FORWARDED_FOR = 沒數值或不顯示

二、使用透明代理服務器的情況:Transparent Proxies

REMOTE_ADDR = 最后一個代理服務器 IP
HTTP_VIA = 代理服務器 IP
HTTP_X_FORWARDED_FOR = 您的真實 IP ,經過多個代理服務器時,這個值類似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

這類代理服務器還是將您的信息轉發給您的訪問對象,無法達到隱藏真實身份的目的。

三、使用普通匿名代理服務器的情況:Anonymous Proxies

REMOTE_ADDR = 最后一個代理服務器 IP
HTTP_VIA = 代理服務器 IP
HTTP_X_FORWARDED_FOR = 代理服務器 IP ,經過多個代理服務器時,這個值類似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

隱藏了您的真實IP,但是向訪問對象透露了您是使用代理服務器訪問他們的。

四、使用欺騙性代理服務器的情況:Distorting Proxies

REMOTE_ADDR = 代理服務器 IP
HTTP_VIA = 代理服務器 IP
HTTP_X_FORWARDED_FOR = 隨機的 IP ,經過多個代理服務器時,這個值類似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

告訴了訪問對象您使用了代理服務器,但編造了一個虛假的隨機IP代替您的真實IP欺騙它。

五、使用高匿名代理服務器的情況:High Anonymity Proxies (Elite proxies)

REMOTE_ADDR = 代理服務器 IP
HTTP_VIA = 沒數值或不顯示
HTTP_X_FORWARDED_FOR = 沒數值或不顯示 ,經過多個代理服務器時,這個值類似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

完全用代理服務器的信息替代了您的所有信息,就象您就是完全使用那臺代理服務器直接訪問對象。

六、獲取客戶端真實的IP地址實例:

function get_real_ip(){    $ip=FALSE;    //客戶端IP 或 NONE     if(!empty($_SERVER["HTTP_CLIENT_IP"])){        $ip = $_SERVER["HTTP_CLIENT_IP"];    }    //多重代理服務器下的客戶端真實IP地址(可能偽造),如果沒有使用代理,此字段為空    if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {        $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);        if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }        for ($i = 0; $i < count($ips); $i++) {            if (!eregi ("^(10│172.16│192.168).", $ips[$i])) {                $ip = $ips[$i];                break;            }        }    }    //客戶端IP 或 (最后一個)代理服務器 IP     return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);}

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !

相關推薦:

php壓縮解壓縮文件的代碼

使用PHP類庫PHPqrCode生成二維碼

以上就是PHP獲取客戶端真實IP地址的方法的詳細內容,更多請關注 其它相關文章!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 望都县| 平昌县| 普兰县| 淮安市| 河北区| 铁岭县| 安阳市| 沈阳市| 安阳县| 蒙阴县| 吉首市| 德江县| 石棉县| 那坡县| 青川县| 都兰县| 四子王旗| 昆山市| 和顺县| 云林县| 安岳县| 洪泽县| 勐海县| 安徽省| 平顺县| 周至县| 安远县| 泽库县| 淮南市| 西宁市| 城口县| 高雄县| 平定县| 东乌珠穆沁旗| 恩平市| 泸溪县| 滁州市| 台北市| 平罗县| 林州市| 太仆寺旗|