par
moogli » 10 août 2011, 20:42
salut,
tu peux le faire avec
array_rand par exemple.
sinon une fonction perso, tu créer un tableau avec tous les caractères utilisables dans ton formulaire (bon dans les deux cas faut le faire

).
tu utilise un for ou un while (avec le nb de caractère voulu) et tu pioche dans le tableaux
perso j'ai fait ça (rapido) y a surement moyen de faire mieux !
<?php
function gencode ($lenght = 8) {
$minchar = range('a','z');
shuffle($minchar);
$number = range(0,9);
shuffle($number);
$majchar = range('A','Z');
shuffle($majchar);
$char = array_merge($minchar,$number,$majchar ,$number);
shuffle($char);
$final = '';
$random_key = array_rand($char,$lenght);
foreach($random_key as $key ){
$final .= $char[ $key ];
}
$nb = preg_match('`(?!^[0-9]*$)(?!^[a-zA-Z!@#$%^&*()_+=<>?]*$)^([a-zA-Z!@#$%^&*()_+=<>?0-9]{8,16})$`iu', $final);
if ($nb == 0 ) $final = gencode($lenght);
else
return $final;
}
//utilisation
$mdp = gencode();
//ou
$mdp = gencode('nombre de caractère');
?>
fait gaffe si tu modifie la fonction à vérifier si l'expression régulière match toujours ^^
@+
salut,
tu peux le faire avec [url=http://php.net/array_rand]array_rand[/url] par exemple.
sinon une fonction perso, tu créer un tableau avec tous les caractères utilisables dans ton formulaire (bon dans les deux cas faut le faire ;) ).
tu utilise un for ou un while (avec le nb de caractère voulu) et tu pioche dans le tableaux :)
perso j'ai fait ça (rapido) y a surement moyen de faire mieux !
[php]
<?php
function gencode ($lenght = 8) {
$minchar = range('a','z');
shuffle($minchar);
$number = range(0,9);
shuffle($number);
$majchar = range('A','Z');
shuffle($majchar);
$char = array_merge($minchar,$number,$majchar ,$number);
shuffle($char);
$final = '';
$random_key = array_rand($char,$lenght);
foreach($random_key as $key ){
$final .= $char[ $key ];
}
$nb = preg_match('`(?!^[0-9]*$)(?!^[a-zA-Z!@#$%^&*()_+=<>?]*$)^([a-zA-Z!@#$%^&*()_+=<>?0-9]{8,16})$`iu', $final);
if ($nb == 0 ) $final = gencode($lenght);
else
return $final;
}
//utilisation
$mdp = gencode();
//ou
$mdp = gencode('nombre de caractère');
?>[/php]
fait gaffe si tu modifie la fonction à vérifier si l'expression régulière match toujours ^^
@+