Salut
Quelqu'un peut me donner un code qui génére aléatoirement un code de dix caractere en php comme pour les cartes de crédit...
Version imprimable
Salut
Quelqu'un peut me donner un code qui génére aléatoirement un code de dix caractere en php comme pour les cartes de crédit...
Non mais on peut s'en doute t'aider à en créer un.
Voir la fonction rand() , à associer avec des tableaux de caractères par exemple
comment utilise-t-on cette fonction ?
Bonjour,
en voici une :
Que tu peux appeller comme ceci :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 // Créer les mots de passe ================================ function Make_Pass(){ $Lettre1 = "ABCDEFGHJKLMNPQRSTUVWXYZ"; $Lettre2 = "ABCDEFGHJKLMNPQRSTUVWXYZ"; $i = 0; $a = rand(0,strlen($Lettre1)); $ThePass = substr($Lettre1, $a, 1); while($i < 9){ $X = rand(0,strlen($Lettre2)); $Xarray = array(2,10,17,20); if(!in_array($X, $Xarray)){ $ThePass.= substr($Lettre2, $X, 1);} else{ $Y = rand(0,9); $ThePass.= $Y;} $i++; } return $ThePass; } //------------------------------------------------------------
Code:
1
2 echo Make_Pass();
dans la même logique que N1bus,une autre fonction que j'ai amélioré à mon goût
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 <?php function make_password($len) { $consonants = 'bdghjlmnpqrstvwxzBDGHJLMNPQRSTVWXZ@#$%^0123456789'; $vowels = "aeiouyAEIOUY"; $alt = time() % 2; srand(time()); for ($i = 0; $i < $len; $i++) { if ($alt == 1) { $password .= $consonants[(rand() % strlen($consonants))]; $alt = 0; } else { $password .= $vowels[(rand() % strlen($vowels))]; $alt = 1; } } return $password; } //pour générer un mot de passe d'une longueur 8 echo '<h1>'.make_password(8).'</h1>'; ?>
et moi je plante la plus simple :P
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 function generate_password($length = 6) { $password = ""; $possible = "0123456789bcdfghjkmnpqrstvwxyz"; $i = 0; while ($i<$length) { $char = substr($possible, mt_rand(0, strlen($possible)-1), 1); if (!strstr($password, $char)) { $password .= $char; $i++; } } return $password; }
@thes32 : sympa
finalement j'ai repris la tienne à ma sauce :
Pour éviter les erreurs de saisie : pas de zéro ou de O o, pas de i, I, l (L minuscule) => confusion avec le 1Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 <?php // Créer les mots de passe =================================== function Make_Pass($len){ $char1 = "AaBbCcDdEeFfGgHhJjKkLMmNnPpQqRrSsTtUuVvWwXxYyZz"; $char2 = "AaBbCcDd!EeFfGgHhJjKkLMm#NnPp$QqRrSsTtUuVv%WwXxYyZz"; //pour que le mot de passe commence impérativement par une lettre $ThePass.= $char1[(rand() % strlen($char1))]; //génère un tableau aléatoire $x_array = array(); for($i = 0; $i < 15; $i++){ $x_array[] = $char2[(rand() % strlen($char2))]; } for ($i = 0; $i < ($len - 1); $i++) { $X = $char2[(rand() % strlen($char2))]; if(!in_array($X, $x_array)){//si le caractère n'est pas dans le tableau, on l'ajoute $ThePass.= $X; } else{ $ThePass.= rand(1,9); // sinon on ajoute un chiffre } } return $ThePass; } //--------------------------------------------------------- echo Make_Pass(10); ?>
ça évite que les clients t'appellent : "ça marche pas !!!"
depuis PHP 4.2.0 : pas besoin d'initialiser avec srand()