PHP 8.4.1 Released!

uniqid

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

uniqidГенерує унікальний ID

Опис

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

Отримує унікальний ідентифікатор з префіксом заснованим на поточному часі в мікросекундах.

Увага

Ця функція не створює випадкових непередбачуваних рядків. Вона не повинна використовуватись з метою безпеки. Користуйтесь криптографічними безпечними функціями/генераторами та криптографічними хеш-функціями, що створюють непередбачувані безпечні ID.

Параметри

prefix

Може бути корисною, наприклад, якщо ви генеруєте ідентифікатор одночасно на декількох хостах, які можуть згенерувати точно такий же ідентифікатор в одну й ту ж секунду.

З пустим префіксом (prefix), повертається рядок довжиною 13 символів. Якщо параметр more_entropy встановлено в true, буде повертатись рядок довжиною 23 символи.

more_entropy

Якщо встановлено в true, uniqid() буде додавати ентропію (за допомогою комбінованих лінійних конгруентних генераторів) в кінці значення, яке повертається, тим самим збільшуючи ймовірність унікального результата.

Значення, що повертаються

Повертає унікальний ідентифікатор, з типом "рядок".

Приклади

Приклад #1 Використання uniqid()

<?php
/* Унікальний ID, схожий на: 4b3403665fea6 */
printf("uniqid(): %s\r\n", uniqid());

/* Ми також можемо додати префікс до ID, як в наступних двох прикладах,
* результати будуть тотожні:
*
* $uniqid = $prefix . uniqid();
* $uniqid = uniqid($prefix);
*/
printf("uniqid('php_'): %s\r\n", uniqid('php_'));

/* Ми також можемо активувати параметр more_entropy, який вимагається на деяких
* системах, таких як Cygwin. В цьому прикладі uniqid()
* генерується унікальний ID, схожий на: 4b340550242239.64159797
*/
printf("uniqid('', true): %s\r\n", uniqid('', true));
?>

Примітки

Застереження

Ця функція не генерує криптографічні безпечні мітки, та без передачі їй додаткових параметрів, повертає значення, яке не багато чим відрізняється від microtime(). Якщо вам потрібно генерувати криптографічні безпечні мітки, використовуйте openssl_random_pseudo_bytes().

Зауваження:

При використанні Cygwin, параметр more_entropy потрібно встановити в true, щоб ця функція працювала.

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