par
ouckileou » 01 mars 2010, 14:03
J'ai décomposé ton code et réduit la chaîne, tu devrais voir d'où vient le problème :
<?php
function genereCode($x){
$caracteresValides = "abc";
$password = "user_";
mt_srand((double) microtime() * 1000000);
for ($i=0;$i<$x;$i++){
$rand = mt_rand(0,strlen($caracteresValides));
echo '<br />';
echo 'nb aléatoire : '.$rand.'<br />';
echo 'correspond à la lettre : '.substr($caracteresValides, $rand, 1).'<br />';
$password .= substr($caracteresValides, $rand, 1);
}
return $password;
}
$identifiant = genereCode(6);
?>
Remarques :
mt_srand() ne sert à rien au dessus de PHP 4.2.0 :
Note: Depuis PHP 4.2.0, vous n'avez plus besoin d'initialiser le générateur de nombres aléatoires avec srand() ou mt_srand() car c'est fait automatiquement.
Ta chaîne de caractères valides ne bouge pas, pourquoi recalculer la longueur avec strlen() à chaque tour de boucle ?
J'ai décomposé ton code et réduit la chaîne, tu devrais voir d'où vient le problème :
[php]
<?php
function genereCode($x){
$caracteresValides = "abc";
$password = "user_";
mt_srand((double) microtime() * 1000000);
for ($i=0;$i<$x;$i++){
$rand = mt_rand(0,strlen($caracteresValides));
echo '<br />';
echo 'nb aléatoire : '.$rand.'<br />';
echo 'correspond à la lettre : '.substr($caracteresValides, $rand, 1).'<br />';
$password .= substr($caracteresValides, $rand, 1);
}
return $password;
}
$identifiant = genereCode(6);
?>[/php]
Remarques :
mt_srand() ne sert à rien au dessus de PHP 4.2.0 :
[quote]Note: Depuis PHP 4.2.0, vous n'avez plus besoin d'initialiser le générateur de nombres aléatoires avec srand() ou mt_srand() car c'est fait automatiquement.[/quote]
Ta chaîne de caractères valides ne bouge pas, pourquoi recalculer la longueur avec strlen() à chaque tour de boucle ?