#1 22. Mai 2007 Passwortgenerator Also ich sehe das Problem. In jedem durchlauf der Schleife wird ein kleinbuchstabe ein Großbuchstabe und ne Zahl rangehängt anstatt in jedem durchlauf nur eine. Aber wie bekomme ich das behoben? Ich will ja schließlich das ENTWEDER nen kleiner Buchstabe ODER nen Großbuchstabe ODER ne zahl genommen wird. ^^ THX schonmal. PHP: <? $stellen = $_POST [ 'stellen' ]; $char1 = $_POST [ 'char1' ]; $char2 = $_POST [ 'char2' ]; $char3 = $_POST [ 'char3' ]; if( $stellen > 50 ) { $stellen = 50 ; $bemerkung = "<i> " . $stellen . " Stellen reichen für den Anfang und für jeden Hacker ;-)" ; } $kleinbuchstaben =array( "a" , "b" , "c" , "d" , "e" , "f" , "g" , "h" , "i" , "j" , "k" , "l" , "m" , "n" , "o" , "p" , "q" , "r" , "s" , "t" , "u" , "v" , "w" , "x" , "y" , "z" ); $grossbuchstaben =array( "A" , "B" , "C" , "D" , "E" , "F" , "G" , "H" , "I" , "J" , "K" , "L" , "M" , "N" , "O" , "P" , "Q" , "R" , "S" , "T" , "U" , "V" , "W" , "X" , "Y" , "Z" ); $zahlen =array( "0" , "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" ); //$Sonderzeichen=array("!",""","§","$","%","&",")","(","=","?","#","+","-","*",";"); $password = "" ; srand ((double) microtime ()* 1645832 ); while ( $f < $stellen ){if ( $char1 == 1 ) { $password .= $kleinbuchstaben [ rand ( 0 , 26 )]; }if ( $char2 == 1 ) { $password .= $grossbuchstaben [ rand ( 0 , 26 )]; }if ( $char3 == 1 ) { $password .= $zahlen [ rand ( 0 , 10 )]; } $f ++;} $md5 = md5 ( $password ) ?> <html><form action="<?php print $_SERVER [ 'PHP_SELF' ]; ?>" method="post"><input name="stellen" type="text" id="stellen">Anzahl der Stellen <br><input type="checkbox" name="char1" value="1" checked="checked" > Kleinbuchstaben <br><input type="checkbox" name="char2" value="1" checked="checked" > Großbuchstaben <br><input type="checkbox" name="char3" value="1" checked="checked" > Zahlen <br><input type="submit" name="submit" value="Generieren"><br><br><br> <? if(empty( $password )) { echo "Kein Passwort generiert<br><br>" ;}else {echo "Dein generiertes Passwort lautet: <b>" . $password . "</b><br><br>" ;echo "Der MD5 Hash beträgt: <b>" . $md5 . "</b><br><br>" ;echo $bemerkung ; } ?> </form></html> + Multi-Zitat Zitieren
#2 22. Mai 2007 AW: Passwortgenerator also die schleife soll so aussehen: schleife anfang { zahl oder großbuchstabe oder kleinbuchstabe -> wiederholen bis iwas false is } ? + Multi-Zitat Zitieren
#3 22. Mai 2007 AW: Passwortgenerator im Prinziep ja..... allerdings muss in der schleife untergebracht werden das WENN die checkbox3 z.B: nicht gewählt ist das dann KEINE zahlen einthalten sein dürfen. Wenn Checkbox2 nicht gewählt ist dann keine Großbuchstaben... etc. } Hoffe ich drück mich nicht zu unklar aus ^^°° + Multi-Zitat Zitieren
#4 22. Mai 2007 AW: Passwortgenerator ohne den code genauer anzuschauen: mach ein dicken array, beginnend mit kleinbuchstaben, dann große, dann zahlen, dann sonderzeichen. je nach wahl des benutzers lässt du dann während des generiens nur die array-indizes zu, die für die gewählten zeichen gültig sind. ich glaub, man könnte das elegant mit regexes lösen... ich setz mich mal nachher dran, wenn ich langeweile hab + Multi-Zitat Zitieren
#5 22. Mai 2007 AW: Passwortgenerator boing und seine regexe .... Also ich hab mal eben dirty was in das php feld geschrieben, hab aber das auswahl feld für kleinbuchstaben weggenommen, da ich es für sinnvoll halte dass der user nicht alles abwählen kann und die kleinbuchstaben als fallback in meiner lösung dienen. PHP: <? $stellen = $_POST [ 'stellen' ]; if( $stellen > 50 ) { $stellen = 50 ; $bemerkung = '<i>50</i> Stellen reichen für den Anfang und für jeden Hacker ;-)' ;} $kleinbuchstaben = array( "a" , "b" , "c" , "d" , "e" , "f" , "g" , "h" , "i" , "j" , "k" , "l" , "m" , "n" , "o" , "p" , "q" , "r" , "s" , "t" , "u" , "v" , "w" , "x" , "y" , "z" ); $zahlen = array( "0" , "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" ); //$Sonderzeichen = array("!",""","§","$","%","&",")","(","=","?","#","+","-","*",";"); srand ( microtime ()* 1645832 ); for ( $i = 0 ; $i < $stellen ; $i ++) { if ( (!( $i % 3 )) && (!empty( $_POST [ 'char2' ])) ) { $password .= strtoupper ( $kleinbuchstaben [ array_rand ( $kleinbuchstaben )]); } elseif ( (!( $i % 2 )) && (!empty( $_POST [ 'char3' ])) ) { $password .= $zahlen [ array_rand ( $zahlen )]; } else { $password .= $kleinbuchstaben [ array_rand ( $kleinbuchstaben )]; }} ?> <html><form action="<?php print $_SERVER [ 'PHP_SELF' ]; ?>" method="post"><input name="stellen" type="text" id="stellen">Anzahl der Stellen <br><input type="checkbox" name="char2" value="1" checked="checked" > Großbuchstaben <br><input type="checkbox" name="char3" value="1" checked="checked" > Zahlen <br><input type="submit" name="submit" value="Generieren"><br><br><br> <? if(empty( $password )) { echo "Kein Passwort generiert<br><br>" ;}else { echo "Dein generiertes Passwort lautet: <b> { $password } </b><br><br>" ; echo 'Der MD5 Hash lautet: <b>' . md5 ( $password ). '</b><br><br>' ;@ echo $bemerkung ;} ?> </form></html> Hoffe das hilft schon etwas weiter, der Algo ist jetzt zwar nicht so regelmäßig wie du oben verlangt hast, aber ist denke ich das was du suchst! PS: Du musst ein bißchen an deinem HTML arbeiten. + Multi-Zitat Zitieren
#6 22. Mai 2007 AW: Passwortgenerator tjo und ich komm mit sowas daher... PHP: ... //erstelle abfrage $bed = array();if( $char1 != "" ) $bed [] = "k" ;if( $char2 != "" ) $bed [] = "g" ;if( $char3 != "" ) $bed [] = "z" ; //keine abfrage angegeben? if( $bed [ 0 ] == "" ) $abort = true ; while( $f < $stellen ) { if( $abort !== true ) { if( in_array ( "k" , $bed ) && in_array ( "g" , $bed ) && in_array ( "z" , $bed )) { //k,g,z } else { if( in_array ( "k" , $bed ) && in_array ( "g" , $bed )) { //k,g } elseif( in_array ( "k" , $bed ) && in_array ( "z" , $bed )) { //k,z } elseif( in_array ( "g" , $bed ) && in_array ( "z" , $bed )) { //g,z } else{ if( $bed [ 0 ] == "k" ) { //k } elseif( $bed [ 0 ] == "g" ) { //g } else { //z } } } $f ++; } else $f = $stellen ;}... haben eben nur grob drüber nachgedacht ps: älerbätsch meins frisst am meißten ressourcen! + Multi-Zitat Zitieren
#7 22. Mai 2007 AW: Passwortgenerator PHP: <? $stellen = $_POST [ 'stellen' ]; $chr = $_POST [ 'chr' ]; if( $stellen > 50 ) { $stellen = 50 ; $bemerkung = "<i> " . $stellen . " Stellen reichen für den Anfang und für jeden Hacker ;-)" ; } $kleinbuchstaben =array( "a" , "b" , "c" , "d" , "e" , "f" , "g" , "h" , "i" , "j" , "k" , "l" , "m" , "n" , "o" , "p" , "q" , "r" , "s" , "t" , "u" , "v" , "w" , "x" , "y" , "z" ); $grossbuchstaben =array( "A" , "B" , "C" , "D" , "E" , "F" , "G" , "H" , "I" , "J" , "K" , "L" , "M" , "N" , "O" , "P" , "Q" , "R" , "S" , "T" , "U" , "V" , "W" , "X" , "Y" , "Z" ); $zahlen =array( "0" , "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" ); //$Sonderzeichen=array("!",""","§","$","%","&",")","(","=","?","#","+","-","*",";"); $kbgbz = array( "0" , "0" , "0" ); srand ((double) microtime ()* 1645832 ); while ( $anz != $stellen ){ $kbgbz [ rand ( 0 , 2 )] = 1 ; if ( $chr [ 0 ] && $kbgbz [ 0 ]) { $password .= $kleinbuchstaben [ rand ( 0 , 26 )]; $kbgbz [ 0 ] = 0 ; }elseif ( $chr [ 1 ] && $kbgbz [ 1 ]) { $password .= $grossbuchstaben [ rand ( 0 , 26 )]; $kbgbz [ 1 ] = 0 ; }elseif ( $chr [ 2 ] && $kbgbz [ 2 ]) { $password .= $zahlen [ rand ( 0 , 10 )]; $kbgbz [ 2 ] = 0 ; } $anz = strlen ( $password ); } $md5 = md5 ( $password ) ?> <html><form action="<?php print $_SERVER [ 'PHP_SELF' ]; ?>" method="post"><input name="stellen" type="text" id="stellen">Anzahl der Stellen <br><input type="checkbox" name="chr[0]" value="1" checked="checked" > Kleinbuchstaben <br><input type="checkbox" name="chr[1]" value="1" checked="checked" > Großbuchstaben <br><input type="checkbox" name="chr[2]" value="1" checked="checked" > Zahlen <br><input type="submit" name="submit" value="Generieren"><br><br><br> <? if(empty( $password )) { echo "Kein Passwort generiert<br><br>" ;}else {echo "Dein generiertes Passwort lautet: <b>" . $password . "</b><br><br>" ;echo "Der MD5 Hash beträgt: <b>" . $md5 . "</b><br><br>" ;echo $bemerkung ; } ?> </form></html> habs so gemacht, klappt ganz gut und ist denk ich das was du dir vorgetsellt hast?( . mfg PS: der rot markierte text sind jene code teile die ich deinem ausgangscode hinzugefügt habe:] ! //EDIT: da fehlt noch was...das hier klappt nur wenn man das passwort mit klein-großbuchstaben + zahlen generiert!!(erweiter das gleich) //EDIT2: so jetzt sollte es klappen is ned ganz sauber aber es funzt ! + Multi-Zitat Zitieren
#8 22. Mai 2007 AW: Passwortgenerator boah .. ich fang gerade heue an mit PHP .. und ihr ballert mich mit regexen array blabliblubb zu ... ROFL xD oh man .. ich schau mir das gleich mal an alles. so.. ^^°° \\\\\\\\ Das von MakenX funzt schonmal wunderbar... ich teste das andere trotzdem mal.. BW habta alle ^^ \\\\\\\\\\\\\\ Ich weis... ich müsste mehr XHTML draus machen... aber als ich HTM gelernt hab .. das schon so ewig her ^^°.. naja ma kiecken + Multi-Zitat Zitieren
#9 22. Mai 2007 AW: Passwortgenerator Hier mal eine Idee, bei der man nicht alle Buchstaben einzeln in ein Array schreiben muss PHP: <? php error_reporting ( E_ALL ); $stellen = 5 ; $bereiche = array( 0 ,array( 48 , 57 ),array( 65 , 90 ),array( 97 , 122 ),array( 32 , 126 )); srand ((double) microtime ()* 1000000 ); $psw = "" ; for( $i = 0 ; $i < $stellen ; $i ++) { $bereich = rand ( 1 , 4 ); if(!isset( $_request [ 'check' . $bereich ])) $i --; else $psw .= chr ( rand ( $bereiche [ $bereich ][ 0 ], $bereiche [ $bereich ][ 1 ])); } echo "Passwort lautet: " . $psw ; ?> P.S. Ascii Table - ASCII character codes and html, octal, hex and decimal chart conversion + Multi-Zitat Zitieren
#10 22. Mai 2007 AW: Passwortgenerator Stimmt würde ich in Delphi auch nicht anders machen. Nicht jeden Buchstaben einzeln sondern als Bereich... man man man.. PHP: $bereiche = array( 0 ,array( 48 , 57 ),array( 65 , 90 ),array( 97 , 122 ),array( 32 , 126 )); is das nen Array im array im array im array??? WTF und was bedeuten eigentlich immer die : " rand ( 1 , 4 ) " beiden Ziffern im Rand?Ist das von bis? + Multi-Zitat Zitieren
#11 22. Mai 2007 AW: Passwortgenerator Hehe ^^ Musste da auch an meine ersten Informatikstunden denken. Ach, ist ja nur ein zweidimensionales Array => Wie ein Schachbrett. So ist es: Code: int rand ( [ int min [, int max]] ) + Multi-Zitat Zitieren
#12 22. Mai 2007 AW: Passwortgenerator jep array's kannste in php so oft verschachteln wie du lustig bist^^ $array = array("1" => array("2" =>array("3" => array("4")))); rand(von, bis); + Multi-Zitat Zitieren
#13 22. Mai 2007 AW: Passwortgenerator Nein kann man nciht so oft verschachteln wie man lustig ist, je nach PHP Einstellung ist irgendwann zu Ende ... @Smoker php.net/funktionsname hilft fast immer also, wenn du nächstes mal etwas nicht weißt einfach selber so nachschauen! + Multi-Zitat Zitieren
#14 22. Mai 2007 AW: Passwortgenerator Naja ne array kannte ich schon .. keine Bange. schon von Delphi. Allerdings ist da irgendwann sense mit verschachteln bzw die übersict geht extrem verloren. Mehrdimensionale Arrys gibts in Delphi auch (man kann algemein viele Parallelen ziehen zwischen programmiersprachen ^^ ) von daher.. naja danke jungs BW is raus... S + Multi-Zitat Zitieren
#15 23. Mai 2007 AW: Passwortgenerator danke für's re-öffnen, hier mal meine version... ohne array. regex machen in meinen augen doch keinen sinn PHP: <? php if( $_POST [ 'action' ]== "generate" ) { $sum = $_POST [ 'a-z' ] + $_POST [ 'A-Z' ] + $_POST [ '0-9' ] + $_POST [ 'special' ]; $chars = "" ; if( $sum & 1 ) $chars .= "abcdefgihjklmnopqrstuvwxyz" ; if( $sum & 2 ) $chars .= "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ; if( $sum & 4 ) $chars .= "0123456789" ; if( $sum & 8 ) $chars .= "#-_+" ; if( $chars ) { srand ((double) microtime ()* 100000 ); $pw = "" ; for( $i = 0 ; $i <= $_POST [ 'length' ]; $i ++) { $pw .= substr ( $chars , ( rand ()%( strlen ( $chars ))), 1 ); // modulo magic!!11eins :) } } else $pw = "no chars selected. noob." ; } ?> <html> <body> <form action="<?php echo $_SERVER [ 'PHP_SELF' ]; ?>" method="post" style="border: 1px solid black; background-color: #eeeeee; padding: 20px; width: 300px;"> length: <input type="text" name="length" value="8" /><br /> chars: <input type="checkbox" name="a-z" value="1">a-z <input type="checkbox" name="A-Z" value="2">A-Z <input type="checkbox" name="0-9" value="4">0-9 <input type="checkbox" name="special" value="8">special <br /> <input type="hidden" name="action" value="generate" /> <input type="submit" value="generate" /> </form> <?php if(isset( $pw )) { ?> <div id="pwgen" style="border: 1px solid black; width: 300px; height: 80px; background-color: #eeeeee; padding: 5px;"> password: <b><?php echo $pw ; ?></b> </div> <?php } ?> </body> </html> zum anfassen auf http://blubberlutschi7.freeweb7.com/pwgen.php + Multi-Zitat Zitieren
#16 23. Mai 2007 AW: Passwortgenerator @teh_boiiingerrr, sehr elgant gefällt mir am besten von allen hier geposteten scripts !! mfg + Multi-Zitat Zitieren
#17 23. Mai 2007 AW: Passwortgenerator Ja mir auch, eigentlich sehr einfach im Gegensatz zu denen die vorangegangen waren ^^ Aber funktioniert einwandfrei und sogar mit style =P ^^ THX nochmal .. insofern keine frägen oder so sind mach ich dann aber wieder zu ... S + Multi-Zitat Zitieren