Zur Startseite Wer ein Portal oder eine Community betreibt, bei der sich Besucher neu anmelden können, braucht manchmal eine Möglichkeit, dem Benutzer ein Passwort vorzugeben. Selbst Portale, bei denen man sein Passwort selbst wählen kann, brauchen diese Funktion, falls der Kunde sein Passwort einmal vergessen hat. In diesem Fall wird dem Kunden meist ein temporäres Passwort zugeschickt, das er dann wieder ändern kann.
Die Notwendigkeit, ein temporäres Passwort zu erzeugen, ergibt sich aus der gängigen Praxis, dass die Kunden-Passwörter niemals im Klartext gespeichert werden sollten. Daher kann ein Portal-Betreiber über den Link "Passwort vergessen" eigentlich nie das Original-Passwort an den Kunden versenden. Das Generieren eines neuen Passwortes ist jedoch möglich.
Damit ein neu generiertes Passwort nicht allzu leicht zu erraten ist, sollte es aus Groß- und Kleinbuchstaben, Ziffern und Sonderzeichen bestehen. Diese kleine PHP-Funktion erzeugt ein solches Passwort mit 8 Zeichen und gibt es als Ergebnis zurück:
function makepwd()
{
mt_srand ((double) microtime() * 1000000);
$passwd = "";
$chars = "0123456789ABCDEFGHabcdefghijklmnopqrstuvwxyz";
for ($k = 0; $k < 8; $k += 1)
{
$num = mt_rand(0, strlen($chars)-1);
$passwd .= $chars[$num];
}
return $passwd;
}
Die Funktion legt zunächst einen Startwert für die Zufallszahlen-Funktion fest. Das ist notwendig, weil sonst bei jedem Aufruf das gleiche Passwort über die Zufallsfunktion erscheinen würde. Diese Initialisierung erfolgt über die PHP-Funktion mt_srand() die mit Hilfe der aktuellen Systemzeit gesetzt wird.
Wenn Sie PHP ab Version 4.2 verwenden, können Sie diese Zeile auch weglassen. Ab dieser Version wird das Setzen eines Startwertes für die Zufallsfunktion automatisch übernommen.
Die Variable $passwd, in die das Passwort gespeichert werden soll, wird zunächst mit einer leeren Zeichenkette initialisiert.
Eine weitere Zeichenkette $chars enthält alle Zeichen, die später in dem Passwort vorkommen können. Hier können (und sollen) natürlich auch Sonderzeichen enthalten sein.
Die eigentliche Generierung des Passwortes passiert in einer For-Schleife, die achtmal durchlaufen wird. Zunächst wird über die Funktion mt_rand() eine Zufallszahl ermittelt, die von Null bis zur Länge-1 gehen kann.
Eine Besonderheit bei PHP ist, dass man eine Zeichenkette wie ein Array auslesen kann. Auf diese Weise kann mit $char[0] das erste Zeichen aus der Variable $chars ermittelt werden. Wenn nun dieser Index eine Zufallszahl ist, so entsteht innerhalb der achtmal durchlaufenen Schleife ein zufälliges Passwort aus acht Ziffern und Zeichen.
Das fertige Passwort wird dann mit "return" an das aufrufende Skript zurück geliefert.
Hinweis: Diesen Text und die enthaltenen Beispielprogramme und Skripte dürfen Sie zum Erlernen der einzelnen Techniken und auch als Grundlage für Ihre eigenen Projekte auf eigene Gefahr kostenlos nutzen.
Bitte denken Sie daran, dass alle Texte und Quellcodes trotzdem urheberrechtlich geschützt sind. Eine direkte Weitergabe ist nur nach ausdrücklicher schriftlicher Genehmigung gestattet.