Geração de senha aleatória (randômica) em PHP

12 09 2011

Sabem aquela tela de login com um botão ‘esqueci minha senha’?

Para sistemas que não criptografam a senha com MD5 (ou outro algoritmo de encriptação), basta ler a senha no banco de dados e enviar para o e-mail do usuário.

Mas se a senha é criptografada, geralmente não há como recuperá-la. É necessário criar uma senha nova e enviar para o usuário.

É para isso que serve a função abaixo. Esta função pode ser melhorada, incluindo caracteres especiais, tirando os números “1″ e “0″ e as letras “l”e “o”… enfim, cada um pode mudar conforme sua necessidade.

Antes que alguém comente, é claro que existem outras formas para geração de senha, usando array com shuffle, expressão regular, etc. Este é apenas um método, bastante simples e fácil de entender; a intenção é ser o mais didático possível.

//Gera senha aleatória no formato a9A9a9A9, com o tamanho que for definido pelo parametro length
function create_password($length = "6"){
    $new_pass = "";
    $kind=0;
    for($i=0; $i<$length; $i++) {
//        $kind=rand(1,3);
        $kind++;
        if ($kind>4){
            $kind=1;
        }
        switch ($kind){
            case 1:
                $char=chr(rand(97,122)); //a-z
                break;
            case 2:
                $char=chr(rand(48,57)); //0-9
                break;
            case 3:
                $char=chr(rand(65,90)); //A-Z
                break;
            case 4:
                $char=chr(rand(48,57)); //0-9
                break;
        }
        $new_pass .= $char;
    }
    return $new_pass;
}

Ações

Informação

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s




Seguir

Obtenha todo post novo entregue na sua caixa de entrada.