Générer un mot de passe facilement mémorisable
Développée dans le but de pouvoir générer des mots de passe facilement mémorisables, la fonction generatePassword() se base sur la notion de "pattern" pour retourner un mot de passe "formatté".
Description
string generatePassword ( [string $pattern [, bool $caseless]] )
La fonction generatePassword()
est basée sur l'utilisation d'un pattern, c'est à dire une chaîne de caractères qui indique à la fonction quel suite de caractères vous souhaitez voir apparaître dans le résultat final.
Trois types de caractères sont disponibles :
c
: consonnev
: voyellen
: chiffre
Le pattern par défaut est cvcvnnn
ce qui peut vous retourner un résultat comme fibo594
.
La fonction generatePassword()
peut prendre deux paramètres facultatifs en entrée : le fameux pattern que vous pouvez moduler à souhait, et la sensibilité à la casse c'est à dire que la fonction vous retourne un mot de passe en minuscules exclusivement (comportement par défaut) ou un mélange de majuscules et minuscules.
Exemples
$password = generatePassword(); // retourne vupa651 $password = generatePassword('ccnnvv') ; // retourne fpao27 $password = generatePassword(null, false); // retourne FiDU439 $password = generatePassword('cvcvcvcv', false); // retourne pIKAlamY
Code source
function generatePassword( $pattern = null, $caseless = true ) { if ( empty($pattern) ) $pattern = 'cvcvnnn'; $characters = array( 'c' => true === $caseless ? 'bcdfghjklmnpqrstvwxz' : 'bcdfghjklmnpqrstvwxzBCDFGHJKLMNPQRSTVWXZ', 'v' => true === $caseless ? 'aeiouy' : 'aeiouyAEIOUY', 'n' => '0123456789' ); $password = ''; for ( $i = 0, $length = strlen($pattern); $i < $length; $i++ ) { $password .= substr( $characters[substr($pattern, $i, 1)], rand(0, strlen($characters[substr($pattern, $i, 1)]) - 1), 1 ); } // endif return $password; } // end of 'generatePassword()'
Comme toujours, n'hésitez pas à me faire part de vos remarques et suggestions quant à l'utilisation et l'amélioration de cette fonction.
Commentaires
-
Étienne Bersac a écrit le 05/10/2007 :
Salut David,
Est-ce que tu pourrais intégrer ça dans Text_Password ?
Ajouter un commentaire
Il n'est plus possible de réagir à cette entrée directement mais si vous pensez que votre intervention peut être intéressante, envoyez-moi votre commentaire, je l'ajouterai ici en votre nom.