Passwortgenerator
2. Version meines Passwortgenerators, geschrieben in PHP
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>4 && $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"> </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 [? ! $ & .]</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> </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>