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...
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 echo Make_Pass();
dans la même logique que N1bus,une autre fonction que j'ai amélioré à mon goût
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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()
Partager