禁令IP范围PHP

发布于 2025-01-24 05:27:06 字数 694 浏览 3 评论 0原文

我找到了此代码:

<?php               
    $ban_ip_range = array('10.49.*.*');
    $user_ip = $_SERVER['REMOTE_ADDR'];

    if(!empty($ban_ip_range)) {
        foreach($ban_ip_range as $range) {
            $range = str_replace('*','(.*)', $range);

            if(preg_match('/'.$range.'/', $user_ip)) {
                echo "NO access";
            }
            else {
                echo 'you have access'; 
            }
        }
    }
?>

此代码完全有效并且有效,问题是我想添加多个范围,所以我做到了:

$ban_ip_range = array('10.49.*.*','10.65.*.*');

但是,这个代码不起作用,它贯穿了条件的两个部分,它显示了:

"NO accessyou have access"

有什么方法可以解决吗?

I found this code:

<?php               
    $ban_ip_range = array('10.49.*.*');
    $user_ip = $_SERVER['REMOTE_ADDR'];

    if(!empty($ban_ip_range)) {
        foreach($ban_ip_range as $range) {
            $range = str_replace('*','(.*)', $range);

            if(preg_match('/'.$range.'/', $user_ip)) {
                echo "NO access";
            }
            else {
                echo 'you have access'; 
            }
        }
    }
?>

This code is completely functional and working, the thing is that I want to add more than one range so I did this:

$ban_ip_range = array('10.49.*.*','10.65.*.*');

But this one didn't work , it goes throught the two parts of the conditional and it shows :

"NO accessyou have access"

Any way of fixxing it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梅窗月明清似水 2025-01-31 05:27:06

使用标志,找到匹配时切换它,在循环后对其进行评估。

$ban_ip_range = array('10.49.*.*','10.65.*.*');
$user_ip = '10.65.1.2'; //$_SERVER['REMOTE_ADDR'];
$access = true;

if(!empty($ban_ip_range)) {
    foreach($ban_ip_range as $range) {
        $range = str_replace('*','(.*)', $range);

        if(preg_match('/'.$range.'/', $user_ip)) {
            $access = false;
            break;
        }
    }
}

if($access) {
    echo 'you have access'; 
} else {
    echo 'NO access';
}

Use a flag, toggle it when you find a match, evaluate it after the loop.

$ban_ip_range = array('10.49.*.*','10.65.*.*');
$user_ip = '10.65.1.2'; //$_SERVER['REMOTE_ADDR'];
$access = true;

if(!empty($ban_ip_range)) {
    foreach($ban_ip_range as $range) {
        $range = str_replace('*','(.*)', $range);

        if(preg_match('/'.$range.'/', $user_ip)) {
            $access = false;
            break;
        }
    }
}

if($access) {
    echo 'you have access'; 
} else {
    echo 'NO access';
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文