Magazine Internet

Générer un identifiant unique comme sur Youtube en PHP

Publié le 16 novembre 2008 par Dator

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


Retour à La Une de Logo Paperblog

LES COMMENTAIRES (3)

Par gtraxx
posté le 02 février à 09:41
Signaler un abus

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 ) )];

Par trebosc
posté le 17 avril à 12:30
Signaler un abus

Il y a plus simple : //Identifiant unique $token = md5 (uniqid ()); $tokenvraimentunique=md5(uniqid(rand(), true));

Par sylvain
posté le 19 novembre à 16:54
Signaler un abus

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...

A propos de l’auteur


Dator 51 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte