Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: ВЫбрать свободный IP

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
tramX
Отправлено: 11 Мая, 2011 - 00:36:39
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




Здравствуйте. Нужно выбрать свободный IP

Занес все данные о занятых IP в массив а
$a = array();

do
{
$el = $myrow_user[ip_user];
array_push($a, $el);
}
while ($myrow_user = mysql_fetch_array($result_user));

Теперь нужно перебрать IP из одной подсети, как только ip не будет обнаружен в массиве а, занести его в переменную.

Как это сделать?
 
 Top
Viper
Отправлено: 11 Мая, 2011 - 07:48:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)






-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
DeepVarvar Супермодератор
Отправлено: 11 Мая, 2011 - 07:54:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




PHP:
скопировать код в буфер обмена
  1. $ips = array("массив айпишников");
  2. $new = true;
  3. $addip = "127.0.0.1"; // добавляемый
  4. foreach ($ips as $ip) {
  5.   if ($ip == $addip) {
  6.     $new = false;
  7.     break;
  8.     }
  9.   }
  10. if ($new) {
  11.   // процедура добавления
  12.   }
 
 Top
tramX
Отправлено: 11 Мая, 2011 - 10:36:41
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




Это получится я массив сравню с одним ИП адресом, а мне нужно сравнивать с каждым ИП из подсети, например.
массив $а = 192.168.4.2, 192.168.4.3, 192.168.4.4
и подсеть 192.168.4.2, 192.168.4.3, 192.168.4.4, 192.168.4.5 ... 192.168.4.254

Получается как только дойдет до 192.168.4.5 его нет в массиве a, значит занести его в переменную иостановить, дальнейшую проверку.
 
 Top
EuGen Администратор
Отправлено: 11 Мая, 2011 - 11:20:49
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Делайте так:
PHP:
скопировать код в буфер обмена
  1.  
  2. /*
  3. $rgIPs=array('192.168.2.1','192.168.2.2','192.168.2.3','192.168.2.5');
  4. $rgSubnet=array('net'=>'192.168.2.0','mask'=>24);
  5. */
  6. function searchIP($rgIPs, $rgSubnet)
  7. {
  8.    $rgLongs=array_map(create_function('$ip', 'return sprintf("%u", ip2long($ip));'), $rgIPs);
  9.    $rgSubnets=range(sprintf("%u", ip2long($rgSubnet['net']))+1, sprintf("%u", ip2long($rgSubnet['net']))+pow(2,32-$rgSubnet['mask'])-1);
  10.    $rgResult=array_diff($rgSubnets, $rgLongs);
  11.    if(!count($rgResult))
  12.    {
  13.       return null;
  14.    }
  15.    return long2ip(array_shift($rgResult));
  16. }
  17. //usage:
  18. $rgIPs=array('192.168.2.1','192.168.2.2','192.168.2.3','192.168.2.5');
  19. $rgSubnet=array('net'=>'192.168.2.0','mask'=>24);
  20. $ip=searchIP($rgIPs, $rgSubnet);
  21.  


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB