Anzeige
Tutorialbeschreibung

Passwortgenerator

Passwortgenerator

In meinem ersten Tutorial möchte ich euch einen einfachen Passwortgenerator vorstellen. Den habe ich aus der Not heraus geschrieben, mir permanent irgendwelche Passwörter für die Kundschaft ausdenken zu müssen. Mittlerweile ist er fester Bestandteil meines Arbeitsalltags.

Viel Spaß damit.


Vorwort

Das Script lässt sich wahlweise per Inlineframe in eine Seite integrieren oder ist als eigenständige Seite lauffähig. Auf Formatierungen oder Positionierungen habe ich in diesem Tutorial bewusst verzichtet. Auch für unerfahrene Anwender sollte es kein Problem sein, das Aussehen des Passwortgenerators den eigenen Ansprüchen oder Vorstellungen anzupassen.

Frei konfigurierbar sind:
  • die Mindestlänge für Passwörter
  • die maximale Länge der Passwörter
  • die Mindestanzahl der ausgegebenen Passwörter
  • die verwendeten Zeichen in den Passwörtern

 

Schritt 1

Wir legen uns eine neue Datei namens passwortgenerator.php im Wurzelverzeichnis oder in einem beliebigen Unterverzeichnis unseres Webservers an (der Einfachheit halber nutze ich hier das Wurzelverzeichnis).

Dort fügen wir jetzt die Grundelemente einer XHTML-Seite ein:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Passwortgenerator</title>
</head>

<body>
</body>
</html>

 

Schritt 2

Jetzt kümmern wir uns um die Konfiguration. Dazu fügen wir am Anfang der Seite einen PHP-Bereich hinzu, der Folgendes beinhaltet:
<?php
//leere Passwortvariable deklarieren
$pw = '';

// Zeichenpoolarray deklarieren
$zeichenpool = array();

/**
 * Konfiguration des Passwortgenerators
 * 
 * Passen Sie die Einstellungen an Ihre Bedürfnisse an
 */

//Mindestlänge für Passwörter
$min_PW_Laenge = 6;

//Maximallänge für Passwörter
$max_PW_Laenge = 24;
				
//Mindestanzahl der ausgegebenen Passwörter
$min_PW_Anz = 1;

//Verfügbare Zeichen für den Zeichenpool 				
//Array für die Kleinbuchstaben
$kb =	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');

//Array für die Großbuchstaben
$gb = 	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');

//Array für die Zahlen
$za = 	array('1','2','3','4','5','6','7','8','9','0');

//Array für die Sonderzeichen
$so = 	array('!','%','=','?','|','#','+','-','~','_');
 

?>
Längen und Anzahl der Passwörter werden durch ganzzahlige Werte festgelegt. Eine Prüfung, ob $min_PW_Laenge > $max_PW_Laenge ist, findet in dieser Scriptversion nicht statt.

Die verfügbaren Zeichen für den Zeichenpool lassen sich je nach Typ frei bestimmen. Ein wenig aufpassen muss man jedoch bei den Sonderzeichen. Des Öfteren treffe ich noch auf Webseiten, in denen Passwörter mit exotischen (oder überhaupt mit ) Sonderzeichen nicht funktionieren.

 

Schritt 3

Im body-Bereich der Seite fügen wir jetzt das notwendige Formular ein.
<table style="width:400; border:1px solid grey; border-collapse:collapse;">
 <tr>
 <th style="text-decoration:underline;">Passwortgenerator V0.1</th>
 </tr>
 <tr>
 <td>
 <form action="" method="post">
 <table style="font-size:12px;">
 <tr>
 <td style="vertical-align:top;">Welche Zeichen verwenden?</td>
 <td>
 <input type="checkbox" name="kleinBuchst" />kleine Buchstaben<br />
 <input type="checkbox" name="grossBuchst" />gro&szlig;e Buchstaben<br />
 <input type="checkbox" name="sonderzeichen" />Sonderzeichen<br />
 <input type="checkbox" name="zahlen" />Zahlen
 </td>
 </tr>
 <tr><td colspan="2">&nbsp;</td></tr>
 <tr>
 <td style="vertical-align:top;">Passwortl&auml;nge bestimmen</td>
 <td>
 <select name="pw_laenge" size="1">Standard: 6 Zeichen
		 </select>
 </td>
 </tr>
 <tr><td colspan="2">&nbsp;</td></tr>
 <tr> 
 <td style="vertical-align:top;">Anzahl<br /> Passw&ouml;rter</td>
 <td>
 <input type="radio" name="anzPW" value="1" />1
 <input type="radio" name="anzPW" value="5"/>5
 <input type="radio" name="anzPW" value="10"/>10
 <input type="radio" name="anzPW" value="15"/>15
 </td>
 </tr>
 <tr><td colspan="2">&nbsp;</td></tr>
 <tr>
 <td>&nbsp;</td>
					<td style="font-size:12px; text-align:center;">
 <input type="submit" name="makePw" value="Passw&ouml;rter erzeugen"/>
 </td>
 </tr>
 </table>
 </form>

 

Schritt 4

Um die Auswahlliste zu füllen (der Bereich zwischen <select> und </select>), schreiben wir uns eine einfache for-Schleife, die uns die fehlenden Optionsfelder einfügt.
<?php 
for($i = $min_PW_Laenge; $i <= $max_PW_Laenge; $i++){
 echo '
 <option value="'.$i.'">'.$i.'</option>
 ';
}
?>

Die Werte der Auswahlliste beginnen bei der Mindestpasswortlänge und enden bei der festgelegten Maximallänge.

 

 

Schritt 5

Für die Ausgabe der Passwörter ist folgender Scriptbereich zuständig, der unter dem Formular eingefügt wird:
<?php
 if(isset($_POST['makePw']))
 {
 //Schlüssel für die einzelnen Arrays
 $pw_key = 0; 	//Ergibt die Gesamtsumme - max. 15
 $pw_key1 = 0;	//Schlüssel 1
 $pw_key2 = 0;	//Schlüssel 2
 $pw_key3 = 0;	//Schlüssel 4
 $pw_key4 = 0;	//Schlüssel 8

 if(isset($_POST['kleinBuchst']))
 {
 $pw_key1 = 1;
 }
 if(isset($_POST['grossBuchst']))
 {
 $pw_key2 = 2;
 }
 if(isset($_POST['sonderzeichen']))
 {
 $pw_key3 = 4;
 }
 if(isset($_POST['zahlen']))
 {
 $pw_key4 = 8;
 }

 //Summe der einzelnen Passwortschlüssel ermitteln
 $pw_key = $pw_key1 + $pw_key2 + $pw_key3 + $pw_key4;

 switch($pw_key)
 {
 case 1: $zeichenpool = array_merge($kb);
 break;
 case 2: $zeichenpool = array_merge($gb);
 break;
 case 3: $zeichenpool = array_merge($kb,$gb);
 break;
 case 4: $zeichenpool = array_merge($so);
 break;
 case 5: $zeichenpool = array_merge($kb,$so);
 break;
 case 6: $zeichenpool = array_merge($gb,$so);
 break;
 case 7: $zeichenpool = array_merge($kb,$gb,$so);
 break;
 case 8: $zeichenpool = array_merge($za);
 break;
 case 9: $zeichenpool = array_merge($kb,$za);
 break;
 case 10: $zeichenpool = array_merge($gb,$za);
 break;
 case 11: $zeichenpool = array_merge($kb,$gb,$za);
 break;
 case 12: $zeichenpool = array_merge($so,$za);
 break;
 case 13: $zeichenpool = array_merge($kb, $so, $za);
 break;
 case 14: $zeichenpool = array_merge($gb, $so, $za);
 break;
 case 15: $zeichenpool = array_merge($kb, $gb, $so, $za);
 break;
 default: $zeichenpool = array_merge($kb,$gb);
 }

 $key_size = sizeof($zeichenpool);

 //Anzahl der Passwörter bestimmen
 if(isset($_POST['anzPW']))
 {
 $anzPW = $_POST['anzPW'];
 }
 
 //Länge des Passwortes übernehmen
 $pw_laenge = $_POST['pw_laenge'];
 
 echo '
 <br />
 <table width:400 style="font-size:12px;">
 <tr>
 <th style="width:25px;">Nr.</th>
 <th style="">Passwort</th>
 </tr>
 ';

 //Zähler für die Anzahl der Passwörter
 $k=1;
 do
 {
 for($i=0; $i<$pw_laenge; $i++)
 {
 srand ((double) microtime() * 1000000); 
			$zufall = rand(1,$key_size); # Startwert, Endwert festlegen
 $pw .= $zeichenpool[$zufall];
 }

 echo '
 <tr>
 <td style="text-align:center;">'.$k.'</td>
 <td>'.$pw.'</td>
 </tr>
 ';
 $pw = '';
 $k++;
 }while($k < ($anzPW+1));

 echo '
 </table>
 ';
 }
 ?>
Nachdem die Schaltfläche Passwörter erzeugen gedrückt wurde, wird geprüft, welche Zeichen im Passwort verwendet werden sollen, und ein daraus resultierender eindeutiger Wert in $pw_key gespeichert.

Mithilfe dieses Wertes setzen wir die gewünschten Zeichen in der Variable $zeichenpool im switch($pw_key){} zusammen. Werden keine Zeichen ausgewählt, wird im Switch per default festgelegt, dass große und kleine Buchstaben verwendet werden sollen.

Der Bereich unter "//Länge des Passwortes übernehmen" kümmert sich ausschließlich um die Ausgabe der generierten Passwörter

Ich hoffe, dieses Tutorial ist verständlich formuliert und ich freue mich über konstruktive Meinungen und Kommentare.

MfG
Taharkas


DVD-Werbung
Kommentare
Achtung: Du kannst den Inhalt erst nach dem Login kommentieren.
Portrait von alkunz
  • 14.10.2011 - 09:25

Danke fürs Tutor! Das benutze ich gerne

Portrait von wahke
  • 26.12.2010 - 00:26

Super gut erklärt :D

Portrait von Jack21
  • 17.09.2010 - 09:47

Super! Das verstehe selbst ich :-))

Portrait von Leon1968
  • 16.09.2010 - 12:38

kann auch ich verstehen - gute ausführliche Erklärung

Portrait von Sero12
  • 15.09.2010 - 19:41

Super gemacht ! Vielen Dank.

Portrait von Dietmar
  • 14.09.2010 - 20:39

Toll erklärt, und wunderbar nachzuvollziehen.
Schönen Dank !!

Portrait von dolmusking
  • 13.09.2010 - 22:45

gut erklärt - klasse workshop

Portrait von myThomas
  • 13.09.2010 - 10:33

Super erklärt und trifft genau was ich gesucht habe.

Portrait von szeichner
  • 13.09.2010 - 10:00

Gut erklärt - leicht nachzuvollziehen!

Portrait von plitsch
  • 13.09.2010 - 08:44

sehr gut umgesetzt, vor allem farblich gut gemacht!

Portrait von Supersuzi
  • 13.09.2010 - 08:05

klasse erklärt, super script...
Dake fürs teilen!

Portrait von haliel
  • 13.09.2010 - 06:11

Gute Umsetzung! Verständlich ud einfach. Gute Arbeit;)

Portrait von skyflight1981
  • 13.09.2010 - 01:07

Klasse umgesetzt, leicht nachzuvollziehen! Top!!!

Portrait von DjTobsi
  • 13.09.2010 - 00:13

gut gemacht. auch farblich top, weiter so.

Portrait von silver129
  • 12.09.2010 - 22:06

Tolles tutorial. kann man schön mit einbinden.

Portrait von WebDiver_09
  • 12.09.2010 - 15:22

Nach so was suche ich schon länger. Gut!

Portrait von stylii
  • 12.09.2010 - 15:07

klasse tutorial! man kann es nach belieben ändern (:

Portrait von Sheva7
  • 12.09.2010 - 14:34

gut erklärt und sehr verständlich!!
mal sehn ob ich das auch so nutzen kann...

Danke

Portrait von nada00
  • 13.09.2010 - 15:52

geile sache kann man gut gebrauchne !

x
×
×