Blog EspecializaTi
Carlos Ferreira Por: Carlos Ferreira Comentar

Aprenda Como Gerar Senhas Aleatórias e Seguras com PHP

Pode que em algum momento quando estiver desenvolvendo alguma aplicação web necessite gerar uma senha aleatória, única e segura com PHP. E no tutorial de hoje vou te ensinar como fazer isso.

A melhor forma de ensinar algo é através da prática, portanto vamos ao exemplo.

Crie uma função chamada por exemplo generatePassword() e essa função em tem a responsabilidade de devolver a senha sempre que for utilizada.

Segue o código da função + documentação:

/** 
 * Gera senhas aleatórias
 *
 * @param int $qtyCaraceters quantidade de caracteres na senha, por padrão 8
 * @author Carlos Ferreira <[email protected]>
 * @return String 
*/
function generatePassword($qtyCaraceters = 8)
{
    //Letras minúsculas embaralhadas
    $smallLetters = str_shuffle('abcdefghijklmnopqrstuvwxyz');

    //Letras maiúsculas embaralhadas
    $capitalLetters = str_shuffle('ABCDEFGHIJKLMNOPQRSTUVWXYZ');

    //Números aleatórios
    $numbers = (((date('Ymd') / 12) * 24) + mt_rand(800, 9999));
    $numbers .= 1234567890;

    //Caracteres Especiais
    $specialCharacters = str_shuffle('[email protected]#$%*-');

    //Junta tudo
    $characters = $capitalLetters.$smallLetters.$numbers.$specialCharacters;

    //Embaralha e pega apenas a quantidade de caracteres informada no parâmetro
    $password = substr(str_shuffle($characters), 0, $qtyCaraceters);

    //Retorna a senha
    return $password;
}

Agora para gerar a senha basta chamar a função generatePassword(), exemplo:

echo generatePassword();//Resultado aleatório com 8 caraceters

 

Ou, especificando a quantidade de caracters:

echo generatePassword(10);//Senha com 10 caraceters

 

Espero que este post tenha te ajudado! 🙂

 

Abraços []’s

 

 

Carlos Ferreira

Sobre o Autor:

Carlos Ferreira

Carlos Ferreira é Analista de Sistemas Experiente, Empreendedor, Fundador da empresa EspecializaTi. Certificações: Comptia Linux +, LPI, Novell Certification.

Todos os direitos reservados © 2019 - EspecializaTi. É proibida a reprodução total ou parcial deste conteúdo.