Dans une interface d'administration qui se respecte, on doit pouvoir à un moment créer des comptes. Il est souvent agréable de se voir proposer un mot de passe aléatoire. En général, je n'utilise pas un mot de passe complétement alétaoire: je supprime les caractères ambigus tels que 0, 1, i, j, l, m, n, o, u, v,I,O. Le code peut ressembler à ça. La fonction attend en paramètre la longueur du mot de passe à générer. Cette fonction n'a rien d'extraordinaire mais elle ne fait que ce qu'on lui demande mais elle le fait bien!
<?php
function generate_password($size) {
$listeChar = '23456789abcdefghkpqrstwxyzABCDEFGHKJLMNPQRSTUVWXYZ';
$max = strlen($listeChar)-1;
$key = '';
for ($i=0;$i<$size;$i++) {
$key .= $listeChar[mt_rand(0,$max)];
}
return $key;
}
?>
Petite mise à jour. J'avais oublié de préciser une chose: pourquoi je supprime certains caractères ? Je supprime les caractères 0, 1, i, j, l, m, n, o, u, v,I,O car ils sont potentiellement ambigus. Le "i" peut être confondu avec le "l", le "0" avec le "O". Même dans la phrase précédente on ne sait pas au premier coup d'oeil si j'ai écris "le zéro et la lettre O" ou "la lettre O et le zéro. L'intérêt est de générer des mots de manière automatique en enlevant les ambiguïtés visuelles.
1 De Webdeb73 -
>> En général, je n'utilise pas un mot de passe complétement alétaoire: je supprime les caractères ambigus tels que 0, 1, i, j, l, m, n, o, u, v,I,O.
Pourquoi retires-tu ces caractères je ne comprends pas ?
++
Hugo.
2 De Palleas -
Effectivement c'est pas bêtes d'echapper ces caractères à ceci pres que le 1 ne se confond pas facilement selon moi :) (le gros relou :P) mais je suis completement d'accord pour l, O etc... J'avoue que je n'y avais pas pensé :$
3 De Nicolas -
Le 1 peut être confondu avec le "l" minuscule.
4 De Palleas -
Moé je suis pas sur
1 / l
Admettons :p
5 De Webdeb73 -
Alors pourquoi supprimer les autres comme j, m, n ?
++
Hugo.