У меня есть оператор foreach в php, код проверяет, находится ли ip в любом из заданных диапазонов, если это эхо-1, это отлично работает.Looping foreach/else statement
Однако я хотел бы добавить еще для этого, так что если ф не соответствует ни одному из массивов, то эхо 2.
Это не работает, как это кажется эхо 2 для каждого из диапазонов он не соответствует так, что это нежелательно.
Как я действительно есть так, если в диапазоне эхо-1 еще, если не в диапазоне эхо-2
$range = (object) array();
$range->name = 'test1';
$range->lower = '10.1.5.78';
$range->upper = '10.1.5.78';
$public_ip_ranges[] = $range;
$range = (object) array();
$range->name = 'test2';
$range->lower = '146.127.0.0';
$range->upper = '146.127.255.255';
$public_ip_ranges[] = $range;
if (($lngIP=ip2long($ip)) < 0) $lngIP += 4294967296;
foreach ($public_ip_ranges as $ip_range) {
if (($lngLow=ip2long($ip_range->lower)) < 0) $lngLow += 4294967296;
if (($lngHigh=ip2long($ip_range->upper)) < 0) $lngHigh += 4294967296;
if($lngIP >= $lngLow and $lngIP <= $lngHigh) {
echo 1;
} else {
echo 2;
break
}
};
Помогло ли мое решение для вас? –