phpday 2025 - Call For Papers

uniqid

(PHP 4, PHP 5, PHP 7, PHP 8)

uniqidGénère un identifiant basé sur le temps

Description

uniqid(string $prefix = "", bool $more_entropy = false): string

Génère un identifiant basé sur l'heure actuelle avec une précision à la microseconde, préfixé par le préfixe donné et ajoutant éventuellement une valeur générée aléatoirement.

Attention

Cette fonction ne génère pas de valeurs cryptographiquement sûres, et ne doit pas être utilisée à des fins cryptographiques, ou à des fins qui exigent que les valeurs renvoyées soient indéchiffrables.

Si de l'aléatoire cryptographiquement sûre est requis, le Random\Randomizer peut être utilisé avec le moteur Random\Engine\Secure. Pour des cas d'usage simple, les fonctions random_int() et random_bytes() fournissent une API pratique et sûre qui est qui est soutenu par le CSPRNG du système d'exploitation.

Avertissement

Cette fonction ne garantit pas l'unicité de la valeur retournée car celle-ci est basée sur l'heure actuelle en microsecondes ou sur l'heure actuelle avec une petite quantité de données aléatoires ajoutées si more_entropy est true.

Liste de paramètres

prefix

Peut être utile, par exemple, pour identifier facilement différents hôtes, si vous générez simultanément sur plusieurs hôtes pouvant générer le même identifiant à la même microseconde. (Cela peut se produire même sur un seul hôte si l'horloge système est déplacée en arrière, par exemple par un ajustement NTP.)

Sans prefix (préfixe vide), la chaîne retournée fera 13 caractères. Si more_entropy est à true, elle fera 23 caractères.

more_entropy

Si le paramètre optionnel more_entropy est true, uniqid() ajoutera une entropie "combined LCG" à la fin de la valeur retournée, ce qui augmente la probabilité de l'unicité du résultat.

Valeurs de retour

Retourne un identifiant basé sur l'horodatage, sous la forme d'une chaîne de caractères.

Avertissement

Cette fonction ne garantit pas l'unicité de la valeur retournée.

Exemples

Exemple #1 Exemple avec uniqid()

<?php
/* Un identifiant unique, comme : 4b3403665fea6 */
printf("uniqid(): %s\r\n", uniqid());

/* Nous pouvons également préfixer l'identifiant unique,
* ce qui revient à :
*
* $uniqid = $prefix . uniqid();
* $uniqid = uniqid($prefix);
*/
printf("uniqid('php_'): %s\r\n", uniqid('php_'));

/* Nous pouvons aussi activer le paramètre more_entropy,
* requis par quelques systèmes, comme Cygwin. Ceci fera que
* uniqid() produira une valeur comme : 4b340550242239.64159797
*/
printf("uniqid('', true): %s\r\n", uniqid('', true));
?>

Notes

Note:

Sous Cygwin, le paramètre more_entropy doit être passé à true pour que cette fonction fonctionne.

Voir aussi

  • random_bytes() - Récupère des octets aléatoires cryptographiquement sécurisés
add a note

User Contributed Notes 1 note

up
2
ken at smallboxsoftware
17 years ago
Just to note this function is fairly slow, and can bring your script to a crawl if it is in a loop. Strangely if you run it as uniqid('', true) it runs much more quickly
To Top