Вход пользователей только из определенной IP-подсети (C)

dmitry1984

Новичок
Вход пользователей только из определенной IP-подсети (C)

Как сделать блокировку доступа по IP ? Чтобы всех, кроме тех, кто имеет айпи подходящий под маску блокировало?

3 диапазона айпи:

1) 217.*.*.1 - 255.255.255.0
2) 193.*.*.1 - 255.255.255.0
3) 194.*.*.1 - 255.255.255.0

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

neko

tеam neko
это по твоему маски???

как сделать..
смотреть remote_address
 

dmitry1984

Новичок
Originally posted by neko
это по твоему маски???

как сделать..
смотреть remote_address
А чем тебе маски не нравятся???
127.0.0.1 - 255.255.255.0 доступ только с айпи 127.0.0.*

Я знаю как определить айпи, а как сделать, чтобы он сверялся из диапазона 127.0.0.1 - 255.255.255.0 ??
 

specialist

Guest
Автор оригинала: dmitry1984
А чем тебе маски не нравятся???
127.0.0.1 - 255.255.255.0 доступ только с айпи 127.0.0.*

Я знаю как определить айпи, а как сделать, чтобы он сверялся из диапазона 127.0.0.1 - 255.255.255.0 ??
если я правильно понял тебе надо сверять принадлежит ли IP определённому диапазону...
например 217.146.*.*
используй для этого $_SERVER['REMOTE_ADDR'] + строковые функции
 

dmitry1984

Новичок
PHP:
<?
$network = "127.0.0.1";
$mask = "255.255.255.0";
$ip = $_SERVER['REMOTE_ADDR'];
function IP_Match($network, $mask, $ip) { 
   $ip_long=ip2long($ip); 
   $network_long=ip2long($network); 
   $mask_long=ip2long($mask);
   
   if (($ip_long & $mask_long) == $network_long) {
echo "Все работает";
      
   } else {
echo "Не работает";
      
   }
}


?>
Вот тут нашел такой кодик, это ведь то самое, что нужно мне??? Только он почему-то на экран ничего (echo всмысле) не выводит...
 

rotoZOOM

ACM maniac
Это потому что в IE стоит заглушка матов.
А на самом деле: где ты вызываешь эту функцию ?
во-вторых работать не будет, так как
PHP:
if (($ip_long & $mask_long) == $network_long) {
написано не верно
 

Cougar

Кошак
dmitry1984
на заборах тоже много чего пишут. А подумать, что возвращает выражение (ip2long($addr) & $mask)?
 
Сверху