04
FEB09Passwörter mit PHP generieren
Auf dem Blog von phptoast.de bin ich eben auf einen netten Beitrag gestoßen bei dem es darum geht ein zufälliges Passwort mittels PHP zu erzeugen. Ich finde den Lösungsweg des Autors von phptoast.de simple aber trotzdem gut, dennoch möchte ich hier in diesem Beitrag meine eigene Variante einmal vorstellen.
Ich habe diese Funktion jetzt bestimmt schon seit gut 2 Jahren und nehme diese auch von Projekt zu Projekt mit. Da man mit meinem Generator zusätzlich noch sagen kann nur Großbuchstaben, nur kleinbuchstaben oder beide Variante gemischt finde ich ein solch generiertes Passwort sehr sicher, natürlich sollte das Passwort dann eine angemessene Länge von mindestens 8 Zeichen besitzen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
function generatePassword( $iLength, $iCase = 0 ) {  $CaseSelector  = $iCase;  $ResultPassword = '';  $Char          = '';  for( $i=1; $i<=$iLength; $i++ )  {    if(!$CaseSelector)      $iCase = mt_rand( 1, 2 );    unset($Char);    $Char[] = chr( mt_rand( 65, 90 ) );    $Char[] = chr( mt_rand( 48, 57 ) );    $Char  = $Char[mt_rand( 0, count($Char)-1 )];    switch( $iCase )    {      case 1: { $Char = strtoupper($Char); break; }      case 2: { $Char = strtolower($Char); break; }    }    $ResultPassword .= $Char;  }  return $ResultPassword; } |
Parameterliste
- $iLength : Integer
Hiermit wird die Länge des Passwortes definiert - $iCase : Integer [optional]
Mit dem zweiten Parameter steuern wir Groß-/Kleinschreibung im Passwort.
1 = nur Großbuchstaben, 2 = nur Kleinbuchstaben, 0 = default = Groß-/ und Kleinschreibung gemischt
Â
Edit
Danke an Markus von http://www.sabiro.de/ für den Hinweis der mt_rand() Funktion. Ich habe daher meine Generator der heutigen Zeit mal angepasst :)





2 Kommentare
Also wenn du mt_rand() nutzen würdest, brauchst du kein srand() mehr
Im Manual steht nämlich unter http://de3.php.net/manual/de/function.mt-srand.php
“Hinweis: Seit PHP 4.2.0 besteht keine Notwendigkeit mehr, den Zufallsgenerator für Zahlen mit srand() oder mt_srand() zu füttern, das geschieht nun automatisch.”
Und ich bin ja der Meinung, dass man mitlerweile sogar schon PHP 5 voraussetzen kann. Ich entwickel auf jeden Fall nicht mehr für PHP 4, seitdem der Support endgültig eingestellt wurde.
Danke Markus, hab meinen Beitrag abgeändert
Kommentar schreiben