En PHP, nous devons souvent générer des identificateurs uniques, comme dans des scénarios tels que l'enregistrement des utilisateurs et la génération de numéros de commande. La fonction Uniqid () et la fonction str_shuffle () sont deux fonctions très utiles dans PHP. Ils génèrent chacun des valeurs uniques et des valeurs aléatoires, mais nous pouvons les utiliser en combinaison pour générer un identifiant unique qui contient à la fois des horodatages et des éléments aléatoires.
Ce qui suit expliquera en détail comment combiner ces deux fonctions pour générer un identifiant unique.
La fonction uniqid () est utilisée pour générer un ID unique basé sur l'heure actuelle (niveau de microseconde). Son utilisation de base est la suivante:
<span><span><span class="hljs-variable">$id</span></span><span> = </span><span><span class="hljs-title function_ invoke__">uniqid</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$id</span></span><span>;
</span></span>Après l'exécution, Uniqid () générera un identifiant unique basé sur l'heure actuelle. Par défaut, il génère une chaîne en fonction de l'horodatage actuel. Vous pouvez également choisir de passer une chaîne de préfixe:
<span><span><span class="hljs-variable">$id</span></span><span> = </span><span><span class="hljs-title function_ invoke__">uniqid</span></span><span>(</span><span><span class="hljs-string">'prefix_'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$id</span></span><span>;
</span></span>L'ID généré est à base de microsecondes, donc dans la plupart des cas, il garantit l'unicité. Mais sa génération s'appuie sur des horodatages, et en théorie, la même pièce d'identité peut être générée si les deux appels sont très proches.
La fonction STR_SHUXH () peut perturber au hasard l'ordre de caractères dans une chaîne. Son utilisation est très simple:
<span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"abcdef"</span></span><span>;
</span><span><span class="hljs-variable">$shuffled</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_shuffle</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$shuffled</span></span><span>;
</span></span>Cela renvoie une nouvelle chaîne avec des caractères aléatoires et le résultat de chaque appel est différent.
Pour améliorer la sécurité et l'aléatoire de la génération d'identifiants uniques, nous pouvons combiner l'ID généré par Uniqid () avec les caractères aléatoires générés par str_shuffle () . De cette façon, nous assurons non seulement l'unicité de l'horodatage, mais introduisons également le caractère aléatoire, ce qui rend l'identifiant généré plus complexe.
Par exemple, le code suivant combine l'ID généré par Uniqid () avec des lettres et des nombres aléatoires:
<span><span><span class="hljs-comment">// Générer unique en fonction de l'heure actuelleID</span></span><span>
</span><span><span class="hljs-variable">$uniqid</span></span><span> = </span><span><span class="hljs-title function_ invoke__">uniqid</span></span><span>();
</span><span><span class="hljs-comment">// Créer une chaîne aléatoire,Peut inclure des lettres et des numéros</span></span><span>
</span><span><span class="hljs-variable">$random_string</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_shuffle</span></span><span>(</span><span><span class="hljs-string">"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"</span></span><span>);
</span><span><span class="hljs-comment">// Intercepter une longueur de chaîne aléatoire(Par exemple8Peu)</span></span><span>
</span><span><span class="hljs-variable">$random_string</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$random_string</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">8</span></span><span>);
</span><span><span class="hljs-comment">// combinaisonuniqidet des cordes aléatoires,Générer l'identifiant unique final</span></span><span>
</span><span><span class="hljs-variable">$unique_id</span></span><span> = </span><span><span class="hljs-variable">$uniqid</span></span><span> . </span><span><span class="hljs-variable">$random_string</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$unique_id</span></span><span>;
</span></span>Pour nous assurer que l'identifiant est plus aléatoire et unique, nous pouvons également ajouter des éléments plus aléatoires ou ajuster la façon dont il est généré. Par exemple, utilisez le deuxième paramètre d' Uniqid () pour le rendre plus aléatoire, tout en rendant la chaîne aléatoire générée par str_shuffle () un peu plus:
<span><span><span class="hljs-comment">// utiliseruniqid()Le deuxième paramètre pour augmenter le hasard</span></span><span>
</span><span><span class="hljs-variable">$uniqid</span></span><span> = </span><span><span class="hljs-title function_ invoke__">uniqid</span></span><span>(</span><span><span class="hljs-string">''</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-comment">// Créer une chaîne aléatoire plus longue</span></span><span>
</span><span><span class="hljs-variable">$random_string</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_shuffle</span></span><span>(</span><span><span class="hljs-string">"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"</span></span><span>);
</span><span><span class="hljs-comment">// Intercepter la longueur d'une chaîne aléatoire,Assurez-vous qu'il a une certaine complexité</span></span><span>
</span><span><span class="hljs-variable">$random_string</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$random_string</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">12</span></span><span>);
</span><span><span class="hljs-comment">// combinaisonuniqidet des cordes aléatoires</span></span><span>
</span><span><span class="hljs-variable">$unique_id</span></span><span> = </span><span><span class="hljs-variable">$uniqid</span></span><span> . </span><span><span class="hljs-variable">$random_string</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$unique_id</span></span><span>;
</span></span>L'identifiant généré de cette manière contient un ID unique basé sur l'horodatage, tout en mélangeant une section aléatoire plus longue, garantissant la complexité et le hasard de l'identifiant.
La façon de générer des identifiants uniques en combinaison avec Uniqid () et Str_Shuffle () peut assurer le caractère unique et le caractère aléatoire de l'ID en même temps. Uniqid () génère un ID unique basé sur l'horodatage actuel, tandis que str_shuffle () ajoute des caractères plus aléatoires à l'ID, ce qui rend l'identifiant plus sécurisé et plus difficile à prévoir. Cette méthode est particulièrement adaptée à une utilisation dans des scénarios où la haute sécurité et l'unicité sont nécessaires, telles que la génération de numéros de commande, les identifiants de session, etc.
Avec ces étapes simples, vous pouvez facilement générer un identifiant unique et aléatoire à l'aide de PHP.