uniqid
(PHP 4, PHP 5, PHP 7)
uniqid — Генерирует уникальный ID
Описание
$prefix
= ""
[, bool $more_entropy
= false
]] )Получает уникальный идентификатор с префиксом, основанный на текущем времени в микросекундах.
Эта функция не создает ни случайную ни трудно подбираемую строку. Нельзя использовать эту функцию в целях повышения безопасности. Используйте криптографически безопасные функции/генераторы случайных данных, и криптографически защищенные хэш-функции для создания непредсказуемых безопасных ID.
Список параметров
-
prefix
-
Может быть полезно, к примеру, если идентификаторы генерируются одновременно на нескольких хостах и генерация идентификаторы производится в одну и ту же микросекунду.
С пустым параметром
prefix
, возвращаемая строка будет длиной в 13 символов. Если параметрmore_entropy
равенTRUE
, то строка буде длиной в 23 символа. -
more_entropy
-
Если равен
TRUE
, то функция uniqid() добавит дополнительную энтропию (используя комбинированный линейный конгруэнтный генератор) в конце возвращаемого значения, что увеличивает вероятность уникальности результата.
Возвращаемые значения
Возвращает уникальный идентификатор в виде строки (string).
Примеры
Пример #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_'));
/* Также можно активировать параметр большей энтропии, который
* требуется на некоторых системах, таких как Cygwin. Таким образом
* функция uniqid() сгенерирует значение: 4b340550242239.64159797
*/
printf("uniqid('', true): %s\r\n", uniqid('', true));
?>
Примечания
Эта функция не генерирует защищенные криптографически токены, по сути, не передается каких-либо дополнительных параметров и возвращаемое значение мало чем отличается от возвращаемого функцией microtime(). Если необходимо сгенерировать криптографически защищенные токены, то нужно использовать функцию openssl_random_pseudo_bytes().
Замечание:
В Cygwin, параметр
more_entropy
должен быть задан какTRUE
для работы этой функции.
Коментарии
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