Aller où ? à Toire ? Connais pas. Bref, une fois n’est pas coutume, revenons à nos caméramans.
Je vais donc vous présenter ici-bas, en sus d’un superbe plugin de mise en forme de code déniché ici pour l’occasion
< ?php
function genRandomPass($level = 3) {
switch($level) {
case 1:
$passLen = mt_rand(6, 8);
$charList = 'abcdefghijklmnopqrstuvwxyz0123456789';
break;
case 2:
$passLen = mt_rand(8, 10);
$charList = 'abcdefghijklmnopqrstuvwxyz0123456789.@-_';
break;
case 3:
$passLen = mt_rand(10, 12);
$charList = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,;:?/!@&amp;-_*$%';
break;
default:
$passLen = mt_rand(10, 12);
$charList = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,;:?/!@&amp;-_*$%';
break;
}
$password = '';
for($i = 0; $i < $passLen; $i ++) {
$password .= $charList[mt_rand(0, strlen($charList))];
}
return $password;
}
?>
Donc ça c’est la fonction en dur et non commentée : voici en détail son fonctionnement :
- Tout d’abord, on déclare la fonction avec un argument entier attendu, initialisé par défaut à 3 : il s’agit du niveau de sécurité procuré par le mot de passe souhaité.
- Ensuite, une boucle switch testera la valeur de cet argument, pour définir les paramètres de génération du mot de passe : on voudra, dans tous les cas, une chaîne de caractères générée aléatoirement. La longueur des chaînes pourra être aléatoire elle aussi, pour pouvoir générer des mots de passe moins prévisibles. La différence entre les niveaux se situera donc essentiellement dans ces deux lignes variant selon le niveau (un niveau autre que 1, 2 ou 3 se verra traité comme un niveau 3) :
$passLen = mt_rand(10, 12);
$charList = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,;:?/!@&amp;-_*$%'
La première ligne définit la longueur de la chaîne, qui sera donc comprise entre 10 et 12 caractères. La seconde définit les caractères utilisables, ici des lettres minuscules et majuscules, des chiffres, et des signes de ponctuation, pour varier les choix.
- Ensuite vient la génération à proprement parler : pour chaque caractère du futur mot de passe (dont la longueur est, comme vu ci-dessus, aléatoire), on concatène un caractère aléatoire de la chaîne $charList
- On renvoie ensuite bien évidemment le mot de passe généré
Bref, on a là une fonction très simple, légère, et qui permet une personnalisation assez poussée : on peut facilement ajouter de nouveaux niveaux, modifier ceux existants, etc… Bien sûr, rien d’exceptionnel, mais je me suis dit que ça pouvait être utile à quelqu’un… Pour ceux qui souhaiteraient tester le script, le voilà en application ici.