php 不同情況下獲取IP地址

1.如果項目放在cdn,進行了加速,打印$_SERVER,裏面的參數會有
[“HTTP_CDN_SRC_IP”]=>
string(15) “112.114.105.123”
[“HTTP_X_ORIGINAL_FORWARDED_FOR”]=>
string(15) “112.114.105.123” //是否會有多個ip出現,有待驗證
2.如果項目是有代理的話,會有參數
[“HTTP_X_FORWARDED_FOR”]=> string(13) “14.204.95.125” //可能會有多個ip
[“HTTP_X_REAL_IP”]=> string(13) “14.204.95.125”
3.有可能會一起出現1和2步驟的參數
在這裏插入圖片描述
4.獲取ip的流程如下:

function getIP(){
    //優化判斷,在有cdn的情況下
    if(isset($_SERVER['HTTP_CDN_SRC_IP'])){
        //爲了兼容百度的CDN,所以轉成數組
        $ip = trim($_SERVER['HTTP_CDN_SRC_IP']);

    }elseif(isset($_SERVER['HTTP_X_REAL_IP'])){
        //代理模式下
        $ip = trim($_SERVER['HTTP_X_REAL_IP']);

    }else{
       //前兩種情況下都沒有ip的時候
       $ip = trim($_SERVER['REMOTE_ADDR']);

    }
    return $ip;
}
發佈了59 篇原創文章 · 獲贊 17 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章