La fonction uniqid() ne marche pas sous PHP5 ?

Pour ceux qui cherchent à générer des noms uniques (références de produits, noms d’images uploadées sur un serveur, clés primaires non auto-incrémentées, mots de passes, etc…), la fonction uniqid() est parfaite.
…Sauf que chez moi, elle ne marche pas sous PHP 5 … La solution est simple :
« uniqid retourne un identifiant préfixé unique, basé sur l’heure courante, en micro-secondes. Le paramètre prefix est optionnel mais peut servir à identifier facilement différents hôtes, si vous générez simultanément des fichiers depuis plusieurs hôtes, à la même micro-seconde » (source)
En pratique, si on appelle uniqid() ainsi :
$var = uniqid();
on obtient une variable alphanumérique avec 13 caractères, ce qui est amplement suffisant pour la plupart des cas.
Le problème vient sous PHP5 : à l’usage, ma variable $var ne me renvoyait rien du tout, alors qu’il n’y avait aucun soucis avec PHP4…
Après quelques recherche, il s’avère que uniqid() supporte un paramètre « more entropy« , en théorie facultatif, mais qui en fait l’est pas tant que ça.
Ce paramètre permet d’allonger la chaîne à 23 caractères pour plus de sécurité. Personnellement je trouve ça trop long mais il en faut pour tous les gouts
!
Ce paramètre se passe ainsi :
$var = uniqid('xx', true);
ou ‘xx’ est un préfixe facultatif, et true signifie l’appel des 23 caractère.
Donc la solution pour PHP 5 et de passer tout de même le paramètre « more entropy » mais avec une valeur … false
Ce qui donne : $var = uniqid('', false);
Et… ça marche !
Exemple : pour générer un nom unique pour un fichier obtenu par upload libre sur un serveur :
// on extrait l'extension du fichier :
$tablo = pathinfo($_FILES[$nomfic]['name']) ;
$ext = strtolower($tablo['extension']) ;
// et on renomme le fichier avec un nom unique :
$nomfic2 = uniqid('', false).'.'.$ext;
(NB : pour l’extension, voir ici)
Pour les paranos, la valeur la plus sécurisée est la suivante :
$var = md5(uniqid(rand(), true));
lool



ben chez moi c’est sous PHP4 qu’elle ne marchait pas, ton truc m’a dépanné : merci thx
http://www.uniqid-php.com
J’ai trouve ce site qui propose l’uniqid courant pour ceux qui veut en recuperer un sans avoir a lancer une page en local juste pour ca, bien pratique !
Bonjour…
Et un IMMENSE merci !!! Je galère depuis une semaine avec un multi upload…et je trouve (par hasard, mais je mets ton adresse dans mes préférées immédiatement!)ton tuyau…et là: Bingo, ça marche nickel!
Merci mille fois! :wub: