fork download
  1. //МЕТОД ПОЛУЧЕНИЯ НЕЗАНЯТЫХ АБОНЕНТОМ IP-АДРЕСОВ//ОЧЕНЬ БЫДЛОКОД!!!
  2. $customer_internet_ip = array(); //Массив назначенных абоненту адресов, определенных под интернет
  3. $customer_ip = array(); //Массив назначенных абоненту адресов
  4. $customer_free_ip = array(); //Массив свободных адресов абонента
  5.  
  6. foreach ($data['uslugi'] as $usluga)
  7. {
  8. if (stristr($usluga['ip'], '-'))
  9. {
  10. $tmp_arr = array();
  11. $tmp_arr = explode('-', $usluga['ip']);
  12. $customer_internet_ip[] = $tmp_arr[0];
  13. $customer_internet_ip[] = $tmp_arr[1];
  14. }
  15. else
  16. {
  17. $customer_ip[] = $usluga['ip'];
  18. }
  19. }
  20.  
  21. $customer_ip_4octs = array();
  22. $customer_subnet = "";
  23. foreach ($customer_internet_ip as $ip)
  24. {
  25. $tmp_ip = explode('.', $ip);
  26. $customer_ip_4octs[] = $tmp_ip[3];
  27. $customer_subnet = $tmp_ip[0].'.'.$tmp_ip[1].'.'.$tmp_ip[2].'.';
  28. }
  29.  
  30. $used_ip_4octs = array();
  31.  
  32. for ($i=$customer_ip_4octs[0]; $i <= $customer_ip_4octs[1] ; $i++)
  33. {
  34. $used_ip_4octs[] = $i;
  35. }
  36.  
  37. foreach ($used_ip_4octs as $ip)
  38. {
  39. $customer_ip[] = $customer_subnet.$ip;
  40. }
  41.  
  42. $ip_count = 0;
  43. $podset = substr($podset_customer[0]['podset'], -2);
  44.  
  45. if ($podset == 30)
  46. $ip_count = 4;
  47. if ($podset == 29)
  48. $ip_count = 8;
  49. if ($podset == 28)
  50. $ip_count = 16;
  51. if ($podset == 27)
  52. $ip_count = 32;
  53.  
  54. for ($i=0; $i < $ip_count ; $i++)
  55. {
  56. $tmp_ip = min($used_ip_4octs);
  57. $tmp_ip += $i;
  58. $customer_free_ip[] = $customer_subnet.$tmp_ip;
  59. }
  60.  
  61. $availavle_ip = array_diff($customer_free_ip, $customer_ip);
  62. $data['free_ip'] = $availavle_ip;
Success #stdin #stdout 0.01s 82880KB
stdin
Standard input is empty
stdout
//МЕТОД ПОЛУЧЕНИЯ НЕЗАНЯТЫХ АБОНЕНТОМ IP-АДРЕСОВ//ОЧЕНЬ БЫДЛОКОД!!!
$customer_internet_ip = array(); //Массив назначенных абоненту адресов, определенных под интернет
$customer_ip = array(); //Массив назначенных абоненту адресов
$customer_free_ip = array(); //Массив свободных адресов абонента

foreach ($data['uslugi'] as $usluga) 
{
    if (stristr($usluga['ip'], '-')) 
    {
        $tmp_arr = array();
        $tmp_arr = explode('-', $usluga['ip']);
        $customer_internet_ip[] = $tmp_arr[0];
        $customer_internet_ip[] = $tmp_arr[1];
    }
    else
    {
        $customer_ip[] = $usluga['ip'];
    }
}

$customer_ip_4octs = array();
$customer_subnet = "";
foreach ($customer_internet_ip as $ip) 
{
    $tmp_ip = explode('.', $ip);
    $customer_ip_4octs[] = $tmp_ip[3];
    $customer_subnet = $tmp_ip[0].'.'.$tmp_ip[1].'.'.$tmp_ip[2].'.';
}

$used_ip_4octs = array();

for ($i=$customer_ip_4octs[0]; $i <= $customer_ip_4octs[1] ; $i++) 
{ 
    $used_ip_4octs[] = $i;
}

foreach ($used_ip_4octs as $ip) 
{
    $customer_ip[] = $customer_subnet.$ip;
}

$ip_count = 0;
$podset = substr($podset_customer[0]['podset'], -2);

if ($podset == 30)
    $ip_count = 4;
if ($podset == 29)
    $ip_count = 8;
if ($podset == 28)
    $ip_count = 16;
if ($podset == 27)
    $ip_count = 32;

for ($i=0; $i < $ip_count ; $i++) 
{ 
    $tmp_ip = min($used_ip_4octs);
    $tmp_ip += $i;
    $customer_free_ip[] = $customer_subnet.$tmp_ip;
}

$availavle_ip = array_diff($customer_free_ip, $customer_ip);
$data['free_ip'] = $availavle_ip;