Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak wygenerować adresy ip z zakresu od do (rozwiązane)
Forum PHP.pl > Forum > PHP
Fixer
Jak wygenerować adresy ip z dowolnego zakresu od 1.0.0.0 do 247.255.255.255?

Ukulałem takie coś ale nie zabardzo ten system się sprawdza widać sad.gif

  1. <?php
  2.  
  3. ########################
  4. # GENERATOR ADRESÓW IP #
  5. ########################
  6.  
  7. //max 4 294 967 295 kombinacji :)
  8. $ip_od = ('192.168.250.0'); // a (min 1.0.0.0)
  9. $ip_do = ('192.168.251.1'); // b (max 247.255.255.255)
  10.  
  11. list ($a1, $a2, $a3, $a4) = explode('.', $ip_od);
  12. list ($b1, $b2, $b3, $b4) = explode('.', $ip_do);
  13.  
  14. if ($a4 == $b4) {
  15.  
  16. }
  17.  
  18. for ($i=$a1 ; $i<=$b1 ; $i++) {
  19. $pierwszy[] .= ("$i");
  20. }
  21.  
  22. for ($i=$a2 ; $i<=$b2 ; $i++) {
  23. $drugi[] .= ("$i");
  24. }
  25.  
  26. for ($i=$a3 ; $i<=$b3 ; $i++) {
  27. $trzeci[] .= ("$i");
  28. }
  29.  
  30. for ($i=$a4 ; $i<=$b4 ; $i++) {
  31. $czwarty[] .= ("$i");
  32. }
  33.  
  34. (int)$licznik = 1;
  35.  
  36. // pierwszy oktet $pierwszy.xxx.xxx.xxx
  37. foreach ($pierwszy as $wynik1)
  38. {
  39.  
  40. //drugi oktet xxx.$drugi.xxx.xxx
  41. foreach ($drugi as $wynik2)
  42. {
  43.  
  44. //trzeci oktet xxx.xxx.$trzeci.xxx
  45. foreach ($trzeci as $wynik3)
  46. {
  47. //czwarty oktet xxx.xxx.xxx.$czwarty
  48. foreach ($czwarty as $wynik4)
  49. {
  50. echo ("Pozycja: <strong>$licznik</strong>.    ");
  51. echo ("$wynik1.$wynik2.$wynik3.$wynik4"); // ewentualny zapis do pliku TXT na HDD
  52. echo ('<br />');
  53. $licznik++;
  54. }
  55.  
  56. }
  57.  
  58. }
  59.  
  60. }
  61.  
  62. $licznik = $licznik-1; // tongue.gif
  63. echo ("<br />Ilo&para;ć wszystkich adresów IP: <strong>$licznik</strong>");
  64.  
  65. ?>


błędny wynik:
Kod
Pozycja: 1.    192.168.250.0
Pozycja: 2.    192.168.251.0
Pozycja: 3.    192.168.252.0
Pozycja: 4.    192.168.253.0
Pozycja: 5.    192.168.254.0
Pozycja: 6.    192.168.255.0


może jakoś przekonwertować adres IP, wygenerować ile trzeba i znowu przekonwertować?

=========================
dopisane po 3 min tongue.gif

ok tylko nie bijcie po oczach tongue.gif

ip2long()
long2ip()

  1. <?php
  2. //max 4 294 967 295 kombinacji :)
  3. $ip_od = sprintf("%u", ip2long('83.1.64.10')); // a (min 1.0.0.0)
  4. $ip_do = sprintf("%u", ip2long('83.1.81.255')); // b (max 247.255.255.255)
  5.  
  6. // tego nie zmianiamy
  7. $ip_min = sprintf("%u", ip2long('127.0.0.1'));
  8. $ip_max = sprintf("%u", ip2long('254.255.255.255'));
  9.  
  10. if ( ip2long($ip_min) >= ip2long($ip_od) and ip2long($ip_max) <= ip2long($ip_do) ) {
  11. echo ('Podałeś błędny zakres adresów IP, popraw go...');
  12. } else {
  13.  
  14. (int)$licznik = 0;
  15.  
  16. // generujemy
  17. for ($i=$ip_od; $i<=$ip_do; $i++ ) {
  18. echo (long2ip($i)."<br />");
  19. $licznik++;
  20. }
  21.  
  22. echo ("Wygenerowałem: <strong> $licznik </strong> asdresów ip");
  23.  
  24. }
  25. ?>
Cotter
Pamiętaj, że w zależności od maski adres z zerami na końcu ma specjalne znaczenie (rozgłoszenie):

maska: 255.255.0.0
adres: 169.186.0.0

nie wiem czy to jest istotne w twoim przypadku. A tak z ciekawości, po co ci zakres IP?
fezzy
Zdaje mi się, że chłopak ma wielką wyobraźnię i cwane myśli, aczkolwiek mogę tylko mylić się.
Nie przedstawię tu żadnych argumentów.
Spojrzałem na wszystko z tzw. lotu ptaka.
Użyłem wyobraźni i wpadłem na pewien pomysł, który mógł mieć na myśli nasz kolega.
Sam nie wiem jakby to wszystko wyszło w planach, jednak kiedyś można się nad tym pomysłem zastanowić.
Być może nadawaliśmy na tych samych falach.
Wiem, że minęły już 2 lata od chwili napisania ostatniego posta, jednak proszę uprzejmie o odpowiedź ze strony autora.
Jeśli jesteś dobry, to znajdziesz mnie w sieci bez wysiłku. tongue.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.