Почему то не работает такая вот функция. Взял с php.net. Там что-то говорилось про баг php, у меня x86_64. Но я так и ничего не нашел. php 5.2.5.
function matchCIDR($addr, $cidr) {
$output = false;
if ( is_array($cidr) ) {
foreach ( $cidr as $cidrlet ) {
if ( matchCIDR( $addr, $cidrlet) ) {
$output = true;
}
}
} else {
list($ip, $mask) = explode('/', $cidr);
$mask = 0xffffffff << (32 - $mask);
$output = ((ip2long($addr) & $mask) == (ip2long($ip) & $mask));
}
return $output;
}
if ( !matchCIDR($_SERVER['REMOTE_ADDR'], array('212.19.128.0/19', '212.154.128.0/17', '82.200.128.0/17', '88.204.128.0/17', '89.218.0.0/16', '92.46.0.0/15')) ) {
echo 'off!';
exit;
}
Что не так?