function is_ip_range($ip, $range) {
if (!($ip = ip2long($ip)))
return false;
// マスク指定
if(strchr($range, '/')){
list($net, $mask) = split('/', $range);
if (!($net = ip2long($net)))
return false;
if (is_numeric($mask))
$mask = long2ip(bindec(str_repeat('1', $mask) . str_repeat('0', 32 - $mask)));
if (!($mask = ip2long($mask)))
return false;
return (($ip & $mask) === ($net & $mask)) ? true : false;
// 範囲指定
} elseif (strchr($range, '-')) {
$range = split('-', $range);
if (!($range[0] = ip2long($range[0])))
return false;
if (!($range[1] = ip2long($range[1])))
return false;
return ($range[0] <= $ip && $ip <= $range[1]) ? true : false;
} elseif ($range = ip2long($range)) {
return ($range === $ip) ? true : false;
}
return false;
}
is_ip_range('192.168.0.1', '192.168.0.0/24')
とか is_ip_range('192.168.0.1', '192.168.0.0/255.255.255.0')
とか is_ip_range('192.168.0.1', '192.168.0.1-192.168.0.254')
とかすれば良いよ。
コメントを残す