ip白黑名单验证

发表日期:2022-08-06 16:12:05 | 来源: | | 浏览(1031) 分类:PHP杂项

支持批量区间验证

function validate_ip($ip, $allow_ip_map)
{
    if (in_array($ip, $allow_ip_map)) {
        return true;
    } else {
        $flag = false;
        $ip_pos = explode('.', $ip);
        foreach ($allow_ip_map as $val) {
            if (strpos($val, '-') !== false) {//范围
                $ip_range = explode('-', $val);
                if (ip2long($ip_range[0]) * -1 >= ip2long($ip) * -1 && ip2long($ip_range[1]) * -1 <= ip2long($ip) * -1) {
                    $flag = true;
                    break;
                }
            } else {//单个
                if (strpos($val, '*') !== false) {//发现有*号替代符
                    $arr = explode('.', $val);
                    $flag = true;//用于记录循环检测中是否有匹配成功的
                    for ($i = 0; $i < 4; $i++) {
                        if ($arr[$i] != '*') {//不等于* 就要进来检测,如果为*符号替代符就不检查
                            if ($arr[$i] != $ip_pos[$i]) {
                                $flag = false;
                                break;//终止检查本个ip 继续检查下一个ip
                            }
                        }
                    }
                    if ($flag) {//如果是true则终止匹配
                        break;
                    }
                }
            }
        }
        return $flag;
    }
}


集速网 copyRight © 2015-2022 宁ICP备15000399号-1 宁公网安备 64010402001209号
与其临渊羡鱼,不如退而结网
欢迎转载、分享、引用、推荐、收藏。