Page 1 sur 1

Mot de passe

Posté : 25 juin 2007, 11:32
par evad
Bonjour,

J'aimerais un script qui génère un mot de passe aléatoire de 8 caractères avec 6 minuscules, 1 majuscule et 1 chiffre.

Je n'ai rien trouvé sur les autres forums, quelqu'un peut m'aider ?

Merci

ev@d

Posté : 25 juin 2007, 13:49
par Ryle
Si tu fais une petite recherche, tu verras qu'il y a déjà eu plusieurs topic sur la génération de mot de passe dans les pages du forum... mais si cela ne te suffisait pas tu peux toujours nous montrer ton code que l'on voit ce qui te manque ou ce qui ne fonctionne pas... :)

Mot de passe

Posté : 25 juin 2007, 16:12
par evad
J'ai vu qu'il y a des topics sur la génération de mots de passe mais ils ne correspondent pas à ce que je recherche.

Voici ce que j'ai pour l'instant :

Code : Tout sélectionner

<?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; } echo generate_password(8); ?>
J'ai un mot de passe de 8 caractères qui est généré aléatoirement mais je voudrais qu'il soit obligatoirement composé de 6 minuscules, 1 majuscule et 1 chiffre (l'ordre des caractères n'a pas d'importance).

Posté : 25 juin 2007, 16:42
par Ryle
Le plus simple pour éviter de t'embête avec des vérification serait selon moi de faire 3 chaines : nombre, minuscules, majuscules et de récupérer dans chaque, 1, 6 et 1 caractères. Ainsi tu es sur d'avoir ton format. :)
Quant à l'ordre, tu peux par exemple les coller dans un tableau et utiliser la fonction shuffle() pour les mélanger :
$listeNb = '23456789';
$listeMin = 'abcdefghkpqrstwxyz';
$listeMaj = 'ABCDEFGHKJLMNPQRSTUVWXYZ'; 

$tab = array();
$tab[] = $listeNb[mt_rand(0, strlen($listeNb)-1)]; // 1 chiffre
$tab[] = $listeMaj[mt_rand(0, strlen($listeMaj)-1)]; // 1 majuscule
for ($i=0;$i<6;$i++) { // 6 minuscules
  $tab[] = $listeMin[mt_rand(0, strlen($listeMin)-1)];
} 

shuffle($tab); // mélange les lettres

return implode('', $tab);

Posté : 25 juin 2007, 17:08
par orgerix
Manque le 1 dans la liste des chiffre :P

Posté : 25 juin 2007, 17:27
par Ryle
Il ne manque pas, il a été volontairement retiré par ev@d, tout comme le L minuscule, le i le O et le zéro.. :)

Cela évite les risques de confusion quand tu génères un mot de passe que tu dois ensuite donner à quelqu'un : tu es sur qu'il ne t'appellera pas pour savoir si c'est un 1, un I ou l ;) (et quand tu as un nombre important d'utilisateurs, moins y en a qui t'appellent pour des broutilles, mieux tu te porte ;))