Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Israel Elias

Gerar uma quantidade de 16 ou menor de caractere únicos

Recommended Posts

Sei que essa função gera um quantidade de 32 caracteres únicos

$token = md5(uniqid(rand(), true));

Existe alguma função que gere uma quantidade de caracteres menor que 32 caracteres por exemplo 10 ou 16 caractere únicos????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caracteres únicos em ralação à uma base de dados ou únicos entre si, isto é, sem se repetirem na mesma string?

Compartilhar este post


Link para o post
Compartilhar em outros sites

achei uma função que gerar uma quantidade de caracteres aleatório

 

function gerarCaracteres($tamanho = 8, $maiusculas = true, $numeros = true)
{
$lmin = 'abcdefghijklmnopqrstuvwxyz';
$lmai = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$num = '1234567890';
$retorno = '';
$caracteres = '';

$caracteres .= $lmin;
if ($maiusculas) $caracteres .= $lmai;
if ($numeros) $caracteres .= $num;

$len = strlen($caracteres);
for ($n = 1; $n <= $tamanho; $n++) {
$rand = mt_rand(1, $len);
$retorno .= $caracteres[$rand-1];
}
return $retorno;
}

echo "valor aleatorio: ".gerarCaracteres(6);/* vai gerar uma quantia de 6 caracteres aleatorio*/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Procurei muito mas não achei nada alem disso essa função que faz gerar uma quantidade de caracteres aleatórios.

 

*No meu script para ter certeza que não existi outra quantia de caracteres aleatórios parecidos, estou fazendo a verificação no banco de dados antes de criar o registro no bd

Compartilhar este post


Link para o post
Compartilhar em outros sites

A melhor forma de fazer isso é misturando o valor de mt_rand com duas variáveis que não podem ser repetir com o mesmo valor, por exemplo o ID do usuário e a timestamp (já citada pelo @hinom). É impossível que se repita um mesmo usuário, num exato segundo, com uma mesma sequencia aleatória.

 

No entanto, só a timestamp já tem uma largura de cerca de 14 caracteres. Então você precisará reduzir o tamanho da timestamp e do id do usuário usando um script que use uma base maior, incluindo letras maiúsculas, minúsculas e números (assim, ao invés de ter apenas 10 variações por caractere, temos 62 -- 10+26+26), como o alphaID, por exemplo (acho que é mais ou menos isso que o @hinom quis dizer com "gerador tag-code").

 

Edit: Aliás. Eu quero apenas endossar a sugestão do hinom, já que ele citou o mesmo script que eu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.