Oft kommt es vor, dass ein Benutzer sein Passwort vergisst. Da in jedem guten System die Passwörter mit einer Einwegverschlüsselung (sah1, md5 o.ä) gespeichert werden, muss diesen Benutzern ein neues PW zugewiesen werden. Die folgenden Funktionen generieren ein PW einer bestimmten Komplexität:
Prüfen, ob das PW der geforderten Komplexität (mindestens je einen Gross- und Kleinbuchstaben, ein Sonderzeichen und eine Ziffer) vorhanden ist. Kann natürlich auch zur Prüfung einer Passwortänderng durch den Benutzer verwendet werden
PHP-Code:
function gen_passwd($anz = 8){
/*
** Function: Generate password
**
** Parameter: Integer $anz Minimal length of password default: 8
**
** Return value: String: Generated password
*/
$z1 = range(33, 47); // Kein O (Buchstabe) und kein 0 (Null)
$z2 = range(49, 78);
$z3 = range(80, 126);
$zeichen = array_merge($z1, $z2, $z3); // Erlaubte Zeichen
do{
$passw = '';
shuffle($zeichen); // Zeichenvorat mischen
for($i = 0;$i < $anz;$i ++){ // $anz Zeichen auslesen
$passw .= chr($zeichen[$i]);
}
} while(!(pw_ok($passw, $anz))); // Konsistenz prüfen
return $passw;
}
PHP-Code:
function pw_ok($passw, $length = 8){
/*
** Function Checks consistency of a password
** The password must consist of at least one digit,
** lower- und uppercase letter and a special sign,
** and the length must be at least $length characters
**
** Parameter: String: $passw Password
** Integer $length Minimal length of the PW
**
** Return value: Boolean
*/
if (strlen($passw) < $length){ // Passwort zu kurz
return false;
}
return preg_match('/[[:digit:]]/', $passw) && // Ziffern
preg_match('/[[:lower:]]/', $passw) && // Kleinbuchstaben
preg_match('/[[:upper:]]/', $passw) && // Grossbuchstaben
preg_match('/[[:punct:]]/', $passw); // Sonderzeichen
}
Kommentar