PHP判断ip地址是否合法

1.获取真正ip地址

function get_ip(){
    //判断服务器是否允许$_SERVER
    if(isset($_SERVER)){
        if(isset($_SERVER[HTTP_X_FORWARDED_FOR])){
            $realip = $_SERVER[HTTP_X_FORWARDED_FOR];
        }elseif(isset($_SERVER[HTTP_CLIENT_IP])) {
            $realip = $_SERVER[HTTP_CLIENT_IP];
        }else{
            $realip = $_SERVER[REMOTE_ADDR];
        }
    }else{
        //不允许就使用getenv获取
        if(getenv("HTTP_X_FORWARDED_FOR")){
            $realip = getenv( "HTTP_X_FORWARDED_FOR");
        }elseif(getenv("HTTP_CLIENT_IP")) {
            $realip = getenv("HTTP_CLIENT_IP");
        }else{
            $realip = getenv("REMOTE_ADDR");
        }
    }
 
    return $realip;
}

 2.验证ip是否合理两种方法

   # 一

 /**
     * 判断IP输入是否合法
     * @param type $ip IP地址
     * @return int 等于1是输入合法  0 输入不合法
     */
    public static function isIp($ip) {
        if (preg_match('/^((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1 -9]?\d))))$/', $ip)) {
            return 1;
        } else {
            return 0;
        }
    }

   # 二

 

    function checkIp($ip)
    {
        $arr = explode('.',$ip);
        if(count($arr) != 4){
            return false;
        }else{
            for($i = 0;$i < 4;$i++){
                if(($arr[$i] <'0') || ($arr[$i] > '255')){
                    return false;
                }
            }
        }
        return true;
    }

 

posted @ 2018-08-10 16:27  戈丫汝  阅读(3369)  评论(0编辑  收藏  举报