J’avais déjà essayé de générer un identifiant unique avec PHP mais je trouvais que celui-ci était beaucoup trop long pour nos sites internet.
J’ai donc planché sur une petite fonction qui permet de générer des identifiants unique avec PHP comme les identifiant de Youtube :
Pour cela j’ai un peu réfléchis et lister tout ce qu’il nous faut !
- Une chaine de 11 caractères.
- Une chaine avec des lettres et des chiffres.
- Des majuscules et des minuscules.
Je suis donc arrivé à cela :
function unique_id($numStr) { srand( (double)microtime()*rand(1000000,9999999) ); // Genere un nombre aléatoire $arrChar = array(); // Nouveau tableau for( $i=65; $i<90; $i++ ) { array_push( $arrChar, chr($i) ); // Ajoute A-Z au tableau array_push( $arrChar, strtolower( chr( $i ) ) ); // Ajouter a-z au tableau } for( $i=48; $i<57; $i++ ) { array_push( $arrChar, chr( $i ) ); // Ajoute 0-9 au tableau } for( $i=0; $i< $numStr; $i++ ) { $uId .= $arrChar[rand( 0, count( $arrChar ) )]; // Ecrit un aléatoire } return $uId; }
Avec cela, on arrive à une approximation des urls de Youtube :
echo unique_id(11); // retourne : 1HGanVmAusP ou fgLJiGrWNxF ou UuqRIQkoXs ...
Article original écrit par Dator et publié sur Dator.fr, le 2008. | Lien direct vers cet article | © Dator.fr - 2008
Mot clés: PHP
LES COMMENTAIRES (3)
posté le 02 février à 09:41
Bonjour j'ai détecter un bug avec cette fonction: E_NOTICE: Undefined offset: 59 Je pense que cela viens de cette ligne : $uId .= $arrChar[rand( 0, count( $arrChar ) )];
posté le 17 avril à 12:30
Il y a plus simple : //Identifiant unique $token = md5 (uniqid ()); $tokenvraimentunique=md5(uniqid(rand(), true));
posté le 19 novembre à 16:54
Tu génères effectivement une chaine de caractères aléatoire, mais rien ne t'assures de son unicité, elle peut très bien avoir été déjà générée, même si la probabilité est faible...