Problème de boucle do while

JPMariotte
Invité n'ayant pas de compte PHPfrance

11 janv. 2011, 01:13

Bonsoir à tous,
Je suis en train de réaliser une boucle do while pour générer un hash unique de 4 caractères à mettre dans une sql.
La boucle sert à vérifier si le hash n'existe pas dans la base sinon on régénère un hash et on retest mais le problème est que j 'ai de temps en temps des doublons dans mes hash.
Voici mon code

Code : Tout sélectionner

do { $caracteres = array("a", "b", "c", "d", "e", "g", "h", "k", "l", "m", "n", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", 1, 2, 3, 4, 5, 6, 7, 8, 9); $caracteres_aleatoires = array_rand($caracteres, 4); foreach($caracteres_aleatoires as $i) { $hash .= $caracteres[$i]; } $sql=mysql_query("SELECT count(id) FROM url WHERE hash ='$hash'")or die(mysql_error()); $resultat = mysql_fetch_array($sql); } while ($resultat[id] != 0);
Avez vous une idée sur le pourquoi j'ai des hash identique ?
Merci de votre aide

ViPHP
ViPHP | 5462 Messages

11 janv. 2011, 02:11

pas top comme technique, ton va facilement mettre énormément de temps pour s'exécuter, pour un nombre limiter de possibilité, un coup de brute force et quelque minute le hash saute, sinon au niveau de ton code y'a uniquement la recherche, d'ailleurs le $hash n'a pas l'air de se réinitialiser :wink:

EDIT : pas besion de boucle non plus pour creer ton $hash, un simple implode fera l'affaire