Eintrag-Details: Passwörter mit PHP automatisch erzeugen

04.02.2006

Passwörter mit PHP automatisch erzeugen

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.

[Mehr:]

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;
}

Code herunterladen

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.

Permalink 04.02.2006 09:15:57, von Marian Email , 449 Wörter, 6065 mal angeschaut   German (DE) Kategorien: PHP

Kommentare, Pingbacks:

Kommentar von: mausfunktion [Besucher] · http://mausfunktion.de
ich find die seite gut...endlich mal jemand der was erklärt und nicht nur den fertigen code asugibt...thx!!!
Permalink 04.06.2006 @ 12:08
Kommentar von: Martin [Besucher]
sieht gut aus das script. bekomme aber kein passwort raus. wie muss ich das script (passwort) korrekt aufrufen?
danke!

gruss, martin
Permalink 01.02.2007 @ 15:09
Kommentar von: Stefan [Besucher] · http://www.8bo.de
@Martin:
Beispielsweise so: $passwd = makepwd();
Permalink 18.10.2007 @ 16:17

Kommentar schreiben:

Ihre E-Mail-Adresse wird nicht angezeigt.
Ihre URL wird angezeigt.
Antispam-Feld
Erlaubte XHTML Tags: <p, ul, ol, li, dl, dt, dd, address, blockquote, ins, del, span, bdo, br, em, strong, dfn, code, samp, kdb, var, cite, abbr, acronym, q, sub, sup, tt, i, b, big, small>
Optionen:
 
(Zeilenumbrüche werden zu <br />)
(Setze Cookies für Name, eMail & URL)

Blogger-Profil

Werbung

Online-Kurse

  • Bequem PHP lernen bei freier Zeiteinteilung von zuhause
  • Der Onlinekurs den jeder versteht
  • www.lernpilot.de/wbt/

Konnte ich helfen?

mehr Werbung