Сравнение ip адреса с заданным диапазон в PHP

and-guzij

Получаю ip c помощью getenv("REMOTE_ADDR")
Как мне теперь его сравнить с заданным диапазоном, чтобы решить что ему выдавать?

a10063

диапазон как задается?

and-guzij

Пока над этим еще не думал Для начала можно его и руками вбить в любом виде

a10063

если диапазон задать булевой функцией по четырем числам, то можно полученный адрес регэкспом разбить на составляющие и отдать этой функции

sergey_m

В perl есть модуль Net-Patricia-Trie. В PHP тебе придется написать его самому

evgen5555

Как мне теперь его сравнить с заданным диапазоном, чтобы решить что ему выдавать?
не думал
лолъ. Придумай точную спецификацию диапазона сначала, а потом вопросы задавай, что ли.

and-guzij

А поподробней можно?

a10063

куда уж подробнее?
подробнее только код, по-моему


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
{
...
}

stm7884696

$test="127.0.0.1";
if(ereg("([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)", $test, $array
{
foreach($array as $val)
print $val."<br>";
}
Выведет :
127
0
0
1

a10063

блин, а я забыл скобки в рэгэкспе расставить

stm7884696

еще можно не eregi , a ereg ....

a10063

привычка...

stm7884696

а че, много пишешь?
может в приват кинешь ссылочки... может сработаемся ?

vall

так пойдёт ?
преобразушь в сетевое представление - типа число.
и просто накладываешь маску и сравниваешь.

viktor954



$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;


Коряво, но суть передаёт.
Оставить комментарий
Имя или ник:
Комментарий: