禁止 IP 范围 php
Ban IP Ranges php
我找到了这段代码:
<?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"
有什么方法可以修复它吗?
使用标志,找到匹配项时切换它,在循环后对其进行评估。
$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';
}
我找到了这段代码:
<?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"
有什么方法可以修复它吗?
使用标志,找到匹配项时切换它,在循环后对其进行评估。
$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';
}