[Resolvido] Rotina Geradora de Senhas

Pessoal,

Estava procurando uma função simples para gerar senhas alfanuméricas.

Encontrei uma função que está ai embaixo:

   /*
	* Função para gerar senhas aleatórias
	*
	* @author    Thiago Belem <contato@thiagobelem.net>
	*
	* @param integer $tamanho Tamanho da senha a ser gerada
	* @param boolean $maiusculas Se terá letras maiúsculas
	* @param boolean $numeros Se terá números
	* @param boolean $simbolos Se terá símbolos
	*
	* @return string A senha gerada
	*/
	function geraSenha($tamanho = 8, $maiusculas = true, $numeros = true, $simbolos = false)
	{
	// Caracteres de cada tipo
	$lmin = 'abcdefghijklmnopqrstuvwxyz';
	$lmai = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

	$num = '1234567890';
	$simb = '!@#$%*-';
	 
	// Variáveis internas
	$retorno = '';
	$caracteres = '';
	 
	// Agrupamos todos os caracteres que poderão ser utilizados
	$caracteres .= $lmin;
	if ($maiusculas) $caracteres .= $lmai;
	if ($numeros) $caracteres .= $num;
	if ($simbolos) $caracteres .= $simb;
	 
	// Calculamos o total de caracteres possíveis
	$len = strlen($caracteres);
	 
	for ($n = 1; $n <= $tamanho; $n++) {
	// Criamos um número aleatório de 1 até $len para pegar um dos caracteres
	$rand = mt_rand(1, $len);
	// Concatenamos um dos caracteres na variável $retorno
	$retorno .= $caracteres[$rand-1];
	}
	 
	return $retorno;
	}

Joguei ela numa biblioteca de rotinas e funciona 100%.

O uso é:


// Gera uma senha com 10 carecteres: letras (min e mai), números
$senha = geraSenha(10);
// gfUgF3e5m7

// Gera uma senha com 9 carecteres: letras (min e mai)
$senha = geraSenha(9, true, false);
// BJnCYupsN

// Gera uma senha com 6 carecteres: letras minúsculas e números
$senha = geraSenha(6, false, true);
// sowz0g

1	// Gera uma senha com 15 carecteres de números, letras e símbolos
$senha = geraSenha(15, true, true, true);
// fnwX@dGO7P0!iWM

Só vamos manter a autoria, vamos ser corretos (não que não sejamos, mas quem sabe. heheheehe).
O site que eu peguei é: http://blog.thiagobelem.net/gerando-senhas-aleatorias-com-php/

1 Curtida

Jorge,

Muito bom. Obrigado por compartilhar.

Parabéns Jorge.

Sempre arranjando soluções e postando para ajudar o próximo.

hhehehehe.

Fellipe e Kleyber, eu me beneficio mais do que me doô aqui no forum.

Mas vamos buscar o equilíbrio. hehehe

Valeu pelo apoio.

Como posso usar esse gerador de senhas para gerar uma quantidade x de senhas e salva-las no db para que pessoas possam obter essas senhas se digitar o email em um formulário?

não precisa deixar umas lista de senhas pré salvas no banco.
conforme a solicitação (digitar email em formulário) use o código acima para gerar uma nova senha e salva no banco para esse formulário.

Mas como eu limito a quantidade de senhas?
Uma vez por semana tenho que gerar uma quantidade diferente.

não sei como funciona sua regra de negócios…

Não entendo o que é limitar uma quantidade de senhas?

essa semana vou precisar gerar 80, na proxima semana tenho que gerar 50 diferentes, na outra uma outra quantidade e assim por diante.