uniqid
(PHP 4, PHP 5, PHP 7, PHP 8)
uniqid — Gera um identificador baseado em horário
Descrição
Obtém um identificador baseado no horário atual com precisão de microsegundos,
prefixado com o parâmetro prefix
e adicionando
opctionalmente um valor gerado aleatoriamente.
Esta função não gera valores criptograficamente seguros e não deve ser usada para propósitos criptográficos ou fins que exijam que os valores retornados sejam impossíveis de adivinhar.
Se aleatoriedade criptograficamente segura for necessária, a classe Random\Randomizer pode ser usada com o mecanismo Random\Engine\Secure. Para casos de uso simples, as funções random_int() e random_bytes() fornecem uma API conveniente e segura que é garantida pelo CSPRNG do sistema operacional.
Esta função não garante a unicidade do valor
retornado porque o valor é baseado no horário atual em microssegundos
ou no horário atual com uma pequena quantidade de dados aleatórios adicionados
se more_entropy
for true
.
Parâmetros
prefix
-
Pode ser útil, por exemplo, para gerar identificadores simultaneamente em vários servidores que poderiam gerar o mesmo identificador no mesmo microssegundo. Isso pode acontecer até no mesmo servidor se o relógio do sistema for atrasado, como em um ajuste de NTP.
Com um
prefix
vazio, a string retornada terá 13 caracteres. Semore_entropy
fortrue
, a string terá 23 caracteres. more_entropy
-
Se informado como
true
, uniqid() irá adicionar entropia (utilizando um gerador linear congruente) ao final do do valor retornado, o que aumentará as chances que o resultado seja globalmente único.
Valor Retornado
Retorna um identificador baseado em horário, como uma string.
Esta função não garante a unicidade do valor retornado.
Exemplos
Example #1 uniqid() Example
<?php
/* Um identificador, por exemplo: 4b3403665fea6 */
printf("uniqid(): %s\r\n", uniqid());
/* Também pode prefixar o identificador, que é o mesmo que
* fazer:
*
* $uniqid = $prefix . uniqid();
* $uniqid = uniqid($prefix);
*/
printf("uniqid('php_'): %s\r\n", uniqid('php_'));
/* Pode-se também ativar o parâmetro more_entropy, o que
* é exigido em alguns sistemas, como o Cygwin. Isto faz que uniqid()
* produza um valor como: 4b340550242239.64159797
*/
printf("uniqid('', true): %s\r\n", uniqid('', true));
?>
Notas
Note:
Sob o Cygwin, o parâmetro
more_entropy
deve ser configurado comotrue
para que essa função funcione.
Veja Também
- random_bytes() - Obtém bytes aleatórios criptograficamente seguros