![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 201 Pomógł: 5 Dołączył: 15.07.2008 Skąd: Kłodzko Ostrzeżenie: (10%) ![]() ![]() |
Witam
Niewiem jak mam zacząć:( Poczebuję skryptu, który podsiadająć dwie dane (adres ip i maskę podsieci), wyliczy adres pierwszego i ostatniego hosta w podsieci, adres podsieci i adres rozgłoszeniowy (ang. broadcast). Zupełnie niewiem jak mam zacząć... Input:
Kod <html> <head> <title>NetTools</title> </head> <body> <form method="post"> <table> <tr> <td>IP Address:</td> <td><input type="text" name="ip_address"></td> </tr> <tr> <td>Subnet mask:</td> <td><input type="text" name="subnet_mask"></td> </tr> <tr> <td></td> <td><input type="submit" value="Submit"></td> </tr> </table> <?php ?> </form> </body> </html> Pomocy!!! -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 385 Pomógł: 26 Dołączył: 22.03.2008 Skąd: TM Ostrzeżenie: (0%) ![]() ![]() |
Żeby takie rzeczy wyliczać, warto podane adresy przeliczyć na ich binarną wartość.. Jak się przelicza (swoisty algorytm) znajdziesz chyba w wikipedii, poczytaj też o operacjach and, or, i negacji..
-------------------- Zapraszam na mojego bloga. Dowiedz się jak uzyskać darmowy, zaufany certyfikat albo jak rozpoznawać głos ;)
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 201 Pomógł: 5 Dołączył: 15.07.2008 Skąd: Kłodzko Ostrzeżenie: (10%) ![]() ![]() |
Mógłbyś mi powiedzieć lub dać linki do manuala (odpowiednie funkcje):
Ten post edytował akurczyk 8.04.2009, 18:26:45 -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 385 Pomógł: 26 Dołączył: 22.03.2008 Skąd: TM Ostrzeżenie: (0%) ![]() ![]() |
http://php.net.pl/manual/pl/function.decbin.php
http://php.net.pl/manual/pl/function.dechex.php http://php.net.pl/manual/pl/function.decoct.php http://php.net.pl/manual/pl/function.bindec.php Ogólnie przejrzyj ten link http://php.net.pl/manual/pl/ref.math.php Co to broadcastu to masz na wikipedii: http://pl.wikipedia.org/wiki/Broadcast Ten post edytował kajzur 8.04.2009, 18:53:57 -------------------- Zapraszam na mojego bloga. Dowiedz się jak uzyskać darmowy, zaufany certyfikat albo jak rozpoznawać głos ;)
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 201 Pomógł: 5 Dołączył: 15.07.2008 Skąd: Kłodzko Ostrzeżenie: (10%) ![]() ![]() |
Wielkie dzięki:)
edit: A jak zamienić liczbę dziesiętną z kropkami na binarną? ![]() Ten post edytował akurczyk 8.04.2009, 20:03:21 -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
explode" title="Zobacz w manualu PHP" target="_manual. Chyba nie chcesz wszystkich oktetów sumować i wtedy tworzyć z tego liczby.
![]() -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 174 Pomógł: 42 Dołączył: 22.07.2007 Skąd: /dev/random Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 201 Pomógł: 5 Dołączył: 15.07.2008 Skąd: Kłodzko Ostrzeżenie: (10%) ![]() ![]() |
Jak zamienić wartość binarną na CIDR (czyli ilość jedynek w zmiennej)
![]() Skrypt w akcji: http://kklodzka.pdg.pl/konwersja.php Kod <html> <head> <title>NetTools</title> </head> <body> <form method="post"> <table> <tr> <td align="right">IP address:</td> <td><input type="text" name="ip_address" value="<?php echo $_POST["ip_address"];?>"></td> </tr> <tr> <td align="right">Type:</td> <td> <select name="ip_address_type"> <option>IP</option> <option>DEC</option> <option>BIN</option> </select> </td> </tr> <tr> <td align="right">Subnet mask:</td> <td><input type="text" name="subnet_mask" value="<?php echo $_POST["subnet_mask"];?>"></td> </tr> <tr> <td align="right">Type:</td> <td> <select name="subnet_mask_type"> <option>IP</option> <option>CIDR</option> <?php //<option>DEC</option> //<option>BIN</option> ?> </select> </td> </tr> <tr> <td></td> <td><input type="submit" value="Submit"></td> </tr> </table> <?php if($_POST["ip_address_type"]=="IP"): $ip_address=ip2long($_POST["ip_address"]); $ip_address=decbin($ip_address); elseif($_POST["ip_address_type"]=="DEC"): $ip_address=decbin($_POST["ip_address"]); elseif($_POST["ip_address_type"]=="BIN"): $ip_address=$_POST["ip_address_type"]; endif; if($_POST["subnet_mask_type"]=="IP"): $subnet_mask=ip2long($_POST["subnet_mask"]); $subnet_mask=decbin($subnet_mask); //Jak zamienić wartość binarną na CIDR (czyli ilość jedynek w zmiennej)? ![]() elseif($_POST["subnet_mask_type"]=="CIDR"): $subnet_mask=$_POST["subnet_mask"]; endif; $ip_address=substr($ip_address,0,$subnet_mask); $subnet_mask=32-$_POST["subnet_mask"]; $subnet_address=$ip_address; for($i=0;$i<$subnet_mask;$i++): $subnet_address=$subnet_address."0"; endfor; $subnet_address=bindec($subnet_address); $subnet_address=long2ip($subnet_address); $first_host=$ip_address; for($i=0;$i<$subnet_mask;$i++): if($i!==$subnet_mask-1): $first_host=$first_host."0"; else: $first_host=$first_host."1"; endif; endfor; $first_host=bindec($first_host); $first_host=long2ip($first_host); $last_host=$ip_address; for($i=0;$i<$subnet_mask;$i++): if($i!==$subnet_mask-1): $last_host=$last_host."1"; else: $last_host=$last_host."0"; endif; endfor; $last_host=bindec($last_host); $last_host=long2ip($last_host); $broadcast=$ip_address; for($i=0;$i<$subnet_mask;$i++): $broadcast=$broadcast."1"; endfor; $broadcast=bindec($broadcast); $broadcast=long2ip($broadcast); ?> <table> <tr> <td align="right">Subnet address:</td> <td><?php echo $subnet_address;?></td> </tr> <tr> <td align="right">First host:</td> <td><?php echo $first_host;?></td> </tr> <tr> <td align="right">Last host:</td> <td><?php echo $last_host;?></td> </tr> <tr> <td align="right">Broadcast:</td> <td><?php echo $broadcast;?></td> </tr> </table> </form> </body> </html> POMOCY_!!! -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 589 Pomógł: 91 Dołączył: 22.05.2008 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Zrób sobie tablicę:
A potem tylko:
Chyba, że to się jakoś przelicza, bo na tym się nie znam niestety. -------------------- Moja gra - scraby.io
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 201 Pomógł: 5 Dołączył: 15.07.2008 Skąd: Kłodzko Ostrzeżenie: (10%) ![]() ![]() |
Racja, zrobię tablicę ale w wersji dwójkowej. Thx
Mam problem:( Niedziała przyjmowanie adresu IP w postaci dziesiętnej:( Zamiana w odwrotną stronę działa, bo wszystko wyliczane jest na podstawie zapisu dziesiętnego adresu IP. Gdy podaję poprawny adres IP, skrypt zwraca maksymalne wartośći wszystkich zapisów. Zrobiłem tak: Kod <html> <head> <title>Narzędzia sieciowe</title> </head> <body> <form method="post"> <table> <tr> <td align="right">Adres IP:</td> <td><input type="text" name="adres_ip" value="<?=$_POST["adres_ip"];?>"></td> </tr> <tr> <td align="right">Zapis:</td> <td> <select name="zapis_adresu_ip"> <option value="2">Dwójkowy</option> <option value="8">Ósemkowy</option> <option value="10">Dziesiętny</option> <option value="11">Kropkowo-dziesiętny</option> <option value="16">Szestnastkowy</option> </select> </td> </tr> <tr> <td align="right">Maska podsieci:</td> <td> <select name="maska_podsieci"> <?php //<option value="32">255.255.255.255/32</option> //<option value="31">255.255.255.254/31</option> ?> <option value="30">255.255.255.252/30</option> <option value="29">255.255.255.248/29</option> <option value="28">255.255.255.240/28</option> <option value="27">255.255.255.224/27</option> <option value="26">255.255.255.192/26</option> <option value="25">255.255.255.128/25</option> <option value="24">255.255.255.0/24(C)</option> <option value="23">255.255.254.0/23</option> <option value="22">255.255.252.0/22</option> <option value="21">255.255.248.0/21</option> <option value="20">255.255.240.0/20</option> <option value="19">255.255.224.0/19</option> <option value="18">255.255.192.0/18</option> <option value="17">255.255.128.0/17</option> <option value="16">255.255.0.0/16(B)</option> <option value="15">255.255.0.0/15</option> <option value="14">255.255.0.0/14</option> <option value="13">255.255.0.0/13</option> <option value="12">255.255.0.0/12</option> <option value="11">255.255.0.0/11</option> <option value="10">255.255.0.0/10</option> <option value="9">255.255.0.0/9</option> <option value="8">255.0.0.0/8(A)</option> <option value="7">254.0.0.0/7</option> <option value="6">252.0.0.0/6</option> <option value="5">248.0.0.0/5</option> <option value="4">240.0.0.0/4</option> <option value="3">224.0.0.0/3</option> <option value="2">192.0.0.0/2</option> <option value="1">128.0.0.0/1</option> </select> </td> </tr> <tr> <td></td> <td><input type="submit" value="Wyślij"></td> </tr> </table> <?php if($_POST["zapis_adresu_ip"]=="2"): $adres_ip=$_POST["adres_ip"]; elseif($_POST["zapis_adresu_ip"]=="8"): $adres_ip=octdec($_POST["adres_ip"]); $adres_ip=decbin($adres_ip); elseif($_POST["zapis_adresu_ip"]=="10"): $adres_ip=decbin($_POST["adres_ip"]); elseif($_POST["zapis_adresu_ip"]=="11"): $adres_ip=ip2long($_POST["adres_ip"]); $adres_ip=decbin($adres_ip); elseif($_POST["zapis_adresu_ip"]=="16"): $adres_ip=hexdec($_POST["adres_ip"]); $adres_ip=decbin($adres_ip); endif; $adres_ip=substr($adres_ip,0,$_POST["maska_podsieci"]); $adres_podsieci_dwojkowo=$adres_ip; for($i=1;$i<=32-$_POST["maska_podsieci"];$i++): $adres_podsieci_dwojkowo=$adres_podsieci_dwojkowo."0"; endfor; $adres_podsieci_dziesietnie=bindec($adres_podsieci_dwojkowo); $adres_podsieci_kropkowo_dziesietnie=long2ip($adres_podsieci_dziesietnie); $adres_podsieci_osemkowo=decoct($adres_podsieci_dziesietnie); $adres_podsieci_szestnastkowo=dechex($adres_podsieci_dziesietnie); $pierwszy_host_dwojkowo=$adres_ip; for($i=1;$i<=32-$_POST["maska_podsieci"];$i++): if($i!==32-$_POST["maska_podsieci"]): $pierwszy_host_dwojkowo=$pierwszy_host_dwojkowo."0"; else: $pierwszy_host_dwojkowo=$pierwszy_host_dwojkowo."1"; endif; endfor; $pierwszy_host_dziesietnie=bindec($pierwszy_host_dwojkowo); $pierwszy_host_kropkowo_dziesietnie=long2ip($pierwszy_host_dziesietnie); $pierwszy_host_osemkowo=decoct($pierwszy_host_dziesietnie); $pierwszy_host_szestnastkowo=dechex($pierwszy_host_dziesietnie); $ostatni_host_dwojkowo=$adres_ip; for($i=1;$i<=32-$_POST["maska_podsieci"];$i++): if($i!==32-$_POST["maska_podsieci"]): $ostatni_host_dwojkowo=$ostatni_host_dwojkowo."1"; else: $ostatni_host_dwojkowo=$ostatni_host_dwojkowo."0"; endif; endfor; $ostatni_host_dziesietnie=bindec($ostatni_host_dwojkowo); $ostatni_host_kropkowo_dziesietnie=long2ip($ostatni_host_dziesietnie); $ostatni_host_osemkowo=decoct($ostatni_host_dziesietnie); $ostatni_host_szestnastkowo=dechex($ostatni_host_dziesietnie); $adres_rozgloszeniowy_dwojkowo=$adres_ip; for($i=1;$i<=32-$_POST["maska_podsieci"];$i++): $adres_rozgloszeniowy_dwojkowo=$adres_rozgloszeniowy_dwojkowo."1"; endfor; $adres_rozgloszeniowy_dziesietnie=bindec($adres_rozgloszeniowy_dwojkowo); $adres_rozgloszeniowy_kropkowo_dziesietnie=long2ip($adres_rozgloszeniowy_dziesietnie); $adres_rozgloszeniowy_osemkowo=decoct($adres_rozgloszeniowy_dziesietnie); $adres_rozgloszeniowy_szestnastkowo=dechex($adres_rozgloszeniowy_dziesietnie); ?> <br> <table> <tr> <td align="right">Adres podsieci (Dwójkowo):</td> <td><?=$adres_podsieci_dwojkowo;?></td> </tr> <tr> <td align="right">Adres podsieci (Ósemkowo):</td> <td><?=$adres_podsieci_osemkowo;?></td> </tr> <tr> <td align="right">Adres podsieci (Dziesiętnie):</td> <td><?=$adres_podsieci_dziesietnie;?></td> </tr> <tr> <td align="right">Adres podsieci (Kropkowo-dziesiętnie):</td> <td><?=$adres_podsieci_kropkowo_dziesietnie;?></td> </tr> <tr> <td align="right">Adres podsieci (Szestnastkowo):</td> <td><?=$adres_podsieci_szestnastkowo;?></td> </tr> <tr></tr> <tr> <td align="right">Pierwszy host (Dwójkowo):</td> <td><?=$pierwszy_host_dwojkowo;?></td> </tr> <tr> <td align="right">Pierwszy host (Ósemkowo):</td> <td><?=$pierwszy_host_osemkowo;?></td> </tr> <tr> <td align="right">Pierwszy host (Dziesiętnie):</td> <td><?=$pierwszy_host_dziesietnie;?></td> </tr> <tr> <td align="right">Pierwszy host (Kropkowo-dziesiętnie):</td> <td><?=$pierwszy_host_kropkowo_dziesietnie;?></td> </tr> <tr> <td align="right">Pierwszy host (Szestnastkowo):</td> <td><?=$pierwszy_host_szestnastkowo;?></td> </tr> <tr></tr> <tr> <td align="right">Ostatni host (Dwójkowo):</td> <td><?=$ostatni_host_dwojkowo;?></td> </tr> <tr> <td align="right">Ostatni host (Ósenkowo):</td> <td><?=$ostatni_host_osemkowo;?></td> </tr> <tr> <td align="right">Ostatni host (Dziesiętnie):</td> <td><?=$ostatni_host_dziesietnie;?></td> </tr> <tr> <td align="right">Ostatni host (Kropkowo-dziesiętnie):</td> <td><?=$ostatni_host_kropkowo_dziesietnie;?></td> </tr> <tr> <td align="right">Ostatni host (Szestnastkowo):</td> <td><?=$ostatni_host_szestnastkowo;?></td> </tr> <tr></tr> <tr> <td align="right">Zakres hostów:</td> <td><?=$ostatni_host_dziesietnie-$adres_podsieci_dziesietnie;?></td> </tr> <tr></tr> <tr> <td align="right">Adres rozgłoszeniowy (Dwójkowo):</td> <td><?=$adres_rozgloszeniowy_dwojkowo;?></td> </tr> <tr> <td align="right">Adres rozgłoszeniowy (Ósemkowo):</td> <td><?=$adres_rozgloszeniowy_osemkowo;?></td> </tr> <tr> <td align="right">Adres rozgłoszeniowy (Dziesiętnie):</td> <td><?=$adres_rozgloszeniowy_dziesietnie;?></td> </tr> <tr> <td align="right">Adres rozgłoszeniowy (Kropkowo-dziesiętnie):</td> <td><?=$adres_rozgloszeniowy_kropkowo_dziesietnie;?></td> </tr> <tr> <td align="right">Adres rozgłoszeniowy (Szestnastkowo):</td> <td><?=$adres_rozgloszeniowy_szestnastkowo;?></td> </tr> </table> <br> Created by Aleksander Kurczyk (codemaster2222(at)gmail(dot)com). All rights reserved. </body> </html> <?=bindec(decbin("3232264041"));?> Ostatnia linijka skryptu również nie działa:( tzn. zwraca maksymalną wartość (w zapisie dwójkowym czydzieści-dwie jedynki)... HELP -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 05:19 |