Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2011, 21:16   #1
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
По умолчанию Цыкл ip-шек

Не знаю как по другому назвать тему, где-то так.
Суть в чем, передаю на страницу подсеть
Код:
$ipnet=$_POST['ipaddrnet'];
например такого вида 10.128.0.0/22
В цыкле нужно пробежаться назначать переменной ip значение от 10.128.0.1 до 10.128.4.255.
Как это сделать ничего в голову не приходит.
Да и входящие данные могут быть например такие 10.128.0.0/24 - тогда диапазон будет таков 10.128.0.1 до 10.128.0.255

Коллеги подскажите, как выкрутиться из ситуации. Благодарю за помощь.
Небесный вне форума Ответить с цитированием
Старый 04.06.2011, 21:28   #2
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
По умолчанию

Вот кое-что нашел
Код:
    $start = "172.20.85.61";
    $end = "172.20.85.71";
    for ($i=ip2long($start); $i<=ip2long($end); $i++){
    ......................
    }
Осталось только определить из строки 10.128.0.0/22 - начало и конец.

Последний раз редактировалось Небесный; 04.06.2011 в 21:30.
Небесный вне форума Ответить с цитированием
Старый 04.06.2011, 21:56   #3
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Код:
$str='10.128.0.0/22';
$start=explode('/',$str);
$start=$start[0];
echo $start;
Это начальный адрес (можно заменить еще в конце .0 на .1, если надо). Конечный по какому принципу определяется у вас не знаю, но примерно так же можно
Код:
$start='10.128.0.0';
$start=explode('.',$start);
$start=$start[0].".".$start[1].".".$start[2]."."."1";
echo $start;

Последний раз редактировалось motorway; 04.06.2011 в 21:59.
motorway вне форума Ответить с цитированием
Старый 04.06.2011, 22:34   #4
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
По умолчанию

Благодарю, работа пошла дальше кипеть!!!
Небесный вне форума Ответить с цитированием
Старый 04.06.2011, 23:02   #5
kirosin
Форумчанин
 
Аватар для kirosin
 
Регистрация: 15.01.2010
Сообщений: 209
По умолчанию

1.в сети 10.128.0.0/22 диапазон хостов будет от 10.128.0.1 до 10.128.3.254, а не до 10.128.4.255, и броадкаст 10.128.3.255.
2.проще переводить ip в число, считать, а потом переводить снова в ip. в php для этого есть функции ip2long() и long2ip()
3.конец диапазона хостов можно посчитать так:
PHP код:
$start='10.128.0.0';
$hz=32-22//для 22й маски 
$end=ip2long($start)+(pow(2,$hz)-2);
echo 
long2ip($end); 
4.если ты в свой скрипт закинешь допустим 10.128.10.0/22, то этот адрес будет принадлежать сети 10.128.8.0 и потому считать надо будет именно с него, а не с 10.128.10.0.
Все генитальное просто.
kirosin вне форума Ответить с цитированием
Старый 04.06.2011, 23:24   #6
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
По умолчанию

Код:
Address:	   	10.128.10.0	   	0A.80.0A.00	   	00001010.10000000.000010 | 10.00000000
Bitmask:	   	22		11111111.11111111.111111 | 00.00000000
Netmask:	   	255.255.252.0	   	FF.FF.FC.00	   	11111111.11111111.111111 | 00.00000000
Wildcard:	   	0.0.3.255	   	00.00.03.FF	   	00000000.00000000.000000 | 11.11111111
Network:	   	10.128.8.0	   	0A.80.08.00	   	00001010.10000000.000010 | 00.00000000
HostMin:	   	10.128.8.1	   	0A.80.08.01	   	00001010.10000000.000010 | 00.00000001
HostMax:	   	10.128.11.254	   	0A.80.0B.FE	   	00001010.10000000.000010 | 11.11111110
Broadcast:	   	10.128.11.255	   	0A.80.0B.FF	   	00001010.10000000.000010 | 11.11111111
Hosts:	   	1024
Ага, об этом я точно не подумал. Тысячу раз благодарю.
Небесный вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расспаралелить цыкл NastyaV Помощь студентам 4 24.03.2011 19:53
задачи:простейшие циклы,цыкл и разветвление,обработка последственности цыкла Chibi Помощь студентам 12 22.11.2010 19:57
цыкл не работает... Natok Помощь студентам 9 28.05.2009 11:54