Сравнение ip адреса с заданным диапазон в PHP
диапазон как задается?
Пока над этим еще не думал Для начала можно его и руками вбить в любом виде
если диапазон задать булевой функцией по четырем числам, то можно полученный адрес регэкспом разбить на составляющие и отдать этой функции
В perl есть модуль Net-Patricia-Trie. В PHP тебе придется написать его самому
Как мне теперь его сравнить с заданным диапазоном, чтобы решить что ему выдавать?
не думаллолъ. Придумай точную спецификацию диапазона сначала, а потом вопросы задавай, что ли.
А поподробней можно?
подробнее только код, по-моему
function in_diapason ($ip_parts)
{
return ($ip_parts[1] == "172") && ($ip_parts[2] == "16");
}
eregi ("[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+", $ip, $parts);
if (in_diapason ($parts
{
...
}
if(ereg("([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)", $test, $array
{
foreach($array as $val)
print $val."<br>";
}
Выведет :
127
0
0
1
блин, а я забыл скобки в рэгэкспе расставить
еще можно не eregi , a ereg ....
привычка...
может в приват кинешь ссылочки... может сработаемся ?
преобразушь в сетевое представление - типа число.
и просто накладываешь маску и сравниваешь.
$allow_ip=array('192.168.0.0','127.0.0.0','10.2.0.0','213.251.192.0');
$allow_mask=array('255.255.0.0','255.0.0.0','255.255.255.0','255.255.254.0');
$ip = $_SERVER['REMOTE_ADDR'];
$re=0;
for ($tz=0;$tz<count($allow_ip);$tz++)
if ip2long($ip)&ip2long($allow_mask[$tz]==ip2long($allow_ip[$tz]$re=1;
Коряво, но суть передаёт.
Оставить комментарий
and-guzij
Получаю ip c помощью getenv("REMOTE_ADDR")Как мне теперь его сравнить с заданным диапазоном, чтобы решить что ему выдавать?