獲取用戶端ip地址

来源:互联网 发布:python sleep 编辑:程序博客网 时间:2024/05/16 03:43
     /**
     * 獲取用戶端ip地址
     */
    static public function getCurrentClientIp()
    {
        $_ip = false;
        
        if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
            $_ip = $_SERVER['HTTP_CLIENT_IP'];
        } else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
            $_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
        }
        
        $_ip_arr = explode(',', $_ip);
        if (!empty($_ip_arr)) {
            for($i = 0; $i < count($_ip_arr); $i++) {
                $_limitip = explode(".", $_ip_arr[$i]);
                if (count($_limitip) != 4) {
                    $_ip_arr[$i] = false;
                } else {
                    foreach ($_limitip as $key) {
                        if (! is_numeric($key) && !preg_match("/^(d+)/",$key)) {
                            $_ip_arr[$i] = false;
                            break;
                        }
                    }
                }
                
                if (!eregi("^(10|172\.16|192\.168|127\.0)\.", $_ip_arr[$i]) && $_ip_arr[$i]) {
                    $_ip = $_ip_arr[$i];
                    break;
                }
            }
        }
        
        $_ip = ! empty($_ip) ? $_ip : $_SERVER['REMOTE_ADDR'];
        
        // preg_match("/[\d\.]{7,15}/",$ip,$_match_arr);
        $_pattern = '/(?:(?:25[0-5]|2[0-4][0-9]|(?:(?:1[0-9])?|[1-9]?)[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|(?:(?:1[0-9])?|[1-9]?)[0-9])/';
        preg_match($_pattern, $_ip, $_match_arr);
        return $_match_arr[0] ? $_match_arr[0] : 'unknow';
    }
0 0
原创粉丝点击