Passwortgenerator

2. Version meines Passwortgenerators, geschrieben in PHP

 
Zahlen [0-9]
Kleinbuchstaben [a-z]
Grossbuchstaben [A-Z]
Sonderzeichen [? ! $ & .]
Wieviele Zeichen soll das Passwort enthalten [5-30]
 

Unterhalb des Menüs ist zu sehen, wie das Ganze in PHP ausschaut. Das geht sicherlich auch einfacher, aber für den Anfang denke ich ganz ok ;-)
 
Freue mich über konstruktive Kritik oder sonstige Kommentare im Gästebuch oder per Kontaktformular.

<?php
//bedingung, damit erst nach drücken des generator-buttons das script gestartet wird
if ($start_pwd ==1){
    
//zeichenanzahl muss zwischen 5 und 30 zeichen betragen
    
if ($anzahl>&& $anzahl<31) {
        
//mindestens eine option muss gewählt sein
        
if ($zahlen == "on" || $kleinb == "on" || $grossb == "on" || $sonderz == "on"){
            
$ergebnis erzeuge_pwd($zahlen,$kleinb,$grossb,$sonderz,$anzahl);
            
$pwdmsg ="Passwort lautet: ";
            
$pwdmsg .=$ergebnis;
            
$msg "";
        }
        else
        {
            
$msg ="Es muss mindestens eine Option ausgewählt werden!";
        }
    }
    else
    {
        
$msg ="Die Länge des Passwortes muss zwischen 5 und 30 Zeichen betragen!";
    }
}

function 
erzeuge_pwd($zahlen,$kleinb,$grossb,$sonderz,$anzahl){
//variablen erzeugen
$z_wert = array(1,2,3,4,5,6,7,8,9,0);
$k_wert = 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");
$g_wert = 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");
$s_wert = array("!","$","?","&",".",);
$kriterium_z "";
$kriterium_k "";
$kriterium_g "";
$kriterium_s "";
$pwd="";
    
//schleife so oft durchlaufen, wie zeichen generiert werden sollen
    
for ($i=0;$i<$anzahl;){
        
//per zufall 0=zahl, 1=kleinbuchstabe, 2=großbuchstabe oder 3=sonderzeichen
        
$start zufall_z(3);
        
//wenn 0 generiere zahl
        
if ($start == 0) {
            
//nur generieren wenn option gewählt wurde
            
if ($zahlen == "on"){
                
$z zufall_z(9);
                
$i++;
                
$kriterium_z "on";
                
$pwd .= $z_wert[$z];
            }
        }
        
//wenn 1 generiere kleinbuchstabe
        
if ($start == 1) {
            
//nur generieren wenn option gewählt wurde
            
if ($kleinb == "on"){
                
$k zufall_z(25);
                
$i++;
                
$kriterium_k "on";
                
$pwd .= $k_wert[$k];
            }
        }
        
//wenn 2 generiere grossbuchstabe
        
if ($start == 2) {
            
//nur generieren wenn option gewählt wurde
            
if ($grossb == "on"){
                
$g zufall_z(25);
                
$i++;
                
$kriterium_g "on";
                
$pwd .= $g_wert[$g];
            }
        }
        
//wenn 3 generiere sonderzeichen
        
if ($start == 3) {
            
//nur generieren wenn option gewählt wurde
           
if ($sonderz == "on"){
                
$s zufall_z(4);
                
$i++;
                
$kriterium_s "on";
                
$pwd .= $s_wert[$s];
           }
        }
    }
    
//prüfung ob alle bedingungen erfüllt sind, rückgabe des passwortes
    
if ($zahlen == $kriterium_z && $kleinb == $kriterium_k && $grossb == $kriterium_g && $sonderz == $kriterium_s){
        return 
$pwd;
    }
    
//function erneut aufrufen, ergebnis zurückliefern
    
else
    {
        
$pwd erzeuge_pwd($zahlen,$kleinb,$grossb,$sonderz,$anzahl);
        return 
$pwd;
    }
}

function 
zufall_z($max){
    
srand ((double)microtime()*1000000);
    
$r rand(0,$max);
    return 
$r;
}
?>

<form action="<?php print $_SERVER["PHP_SELF"]; ?>">
 <table cellpadding="0px" cellspacing="0px">
  <tr>
   <td colspan="2">&nbsp;</td>
  </tr>
  <tr>
   <td><input style="width:15px" type="checkbox" name="zahlen"<?php if (isset($_REQUEST['zahlen'])) echo "checked=\"checked\"";?> /></td>
   <td>Zahlen [0-9]</td>
  </tr>
  <tr>
   <td><input style="width:15px" type="checkbox" name="kleinb"<?php if (isset($_REQUEST['kleinb'])) echo "checked=\"checked\"";?> /></td>
   <td>Kleinbuchstaben [a-z]</td>
  </tr>
  <tr>
   <td><input style="width:15px" type="checkbox" name="grossb"<?php if (isset($_REQUEST['grossb'])) echo "checked=\"checked\"";?> /></td>
   <td>Grossbuchstaben [A-Z]</td>
  </tr>
  <tr>
   <td><input style="width:15px" type="checkbox" name="sonderz" <?php if (isset($_REQUEST['sonderz'])) echo "checked=\"checked\"";?> /></td>
   <td>Sonderzeichen [? ! $ &amp; .]</td>
  </tr>
  <tr>
   <td><input style="width:15px;background:#fff" type="text" name="anzahl" size="1" value="<?php print htmlspecialchars($_REQUEST['anzahl']); ?>" /></td>
   <td>Wieviele Zeichen soll das Passwort enthalten [5-30]</td>
  </tr>
  <tr>
   <td colspan="2"><input type="submit" name="do_form_x" value="Passwort generieren" /></td>
  </tr>
  <tr>
   <td>&nbsp;</td>
   <td><input type="hidden" name="start_pwd" value="1" /></td>
  </tr>
 </table>
</form>
<span style="color:blue; font-size: larger;"><?php print nl2br($pwdmsg?></span>
<span style="color:red; font-size: smaller;"><?php print nl2br($msg?></span>

http://www.t-kiesewetter.de © 2003-2015 Tommy Kiesewetter - Alle Rechte vorbehalten
hosted by kiesewetter.NET // Webdesign, Hosting & Service in Straubing