Eu sempre fiz rotinas para geração de senhas, sempre formatada para atender ao cliente, mas nunca tinha chegado a uma tão boa e enxuta quanto a do Pedro Faria do excelente site PHP avançado, que se pode aplicar a qualquer cliente.
Ele fez uma função que você determina quais tipo de caracteres irão participar da sua senha e quantos caracteres irão compor a senha, essa é para ficar na biblioteca de funções!
function gerar_senha ($tamanho, $maiuscula, $minuscula, $numeros, $codigos)
{
$maius = "ABCDEFGHIJKLMNOPQRSTUWXYZ";
$minus = "abcdefghijklmnopqrstuwxyz";
$numer = "0123456789";
$codig = '!@#$%&*()-+.,;?{[}]^><:|';
$base = '';
$base .= ($maiuscula) ? $maius : '';
$base .= ($minuscula) ? $minus : '';
$base .= ($numeros) ? $numer : '';
$base .= ($codigos) ? $codig : '';
srand((float) microtime() * 10000000);
$senha = '';
for ($i = 0; $i < $tamanho; $i++) {
$senha .= substr($base, rand(0, strlen($base)-1), 1);
}
return $senha;
}
// Para usar a a funcao faca assim:
print "Senha gerada: ".gerar_senha(8, true, false, false, true)."\n";
Muito bom! Parabéns ao Pedro Faria!