Conheça o Plugfeed | » Início » Programação » PHP » Gerar senha aleatória em PHP
Conheça o Plugfeed | » Início » Programação » PHP » Gerar senha aleatória em PHP -->
 
Avaliação: | Publicado em: 31/10/2006
Gerar senha aleatória em PHP
Oberaldo Bull Programador PHP/MySql, trabalho no desenvolvimento de sites e sistemas dinâmicos. Faço parte da EquipeXQ de programadores, administro o site nacional do framework CakePHP (www.cakephp.com.br).
Gerar senha aleatória em PHP

Provavelmente vocês algum dia já esqueceram a senha de acesso a algum site, e precisaram clicar naquele famoso link "Recuperar Senha".

E quando clicamos, é solicitado o e-mail utilizado dirante o cadastro, para que seja enviada uma nova senha, para nosso e-mail, e esta senha, normalmente não é a senha que cadastramos, isto porque, o sistema teve que reiniciar sua senha e gerar uma nova senha, já que você a esqueceu.

Por motivos de segurança os sites guardam as senhas em banco de dados criptografada (usando MD5, crypt, etc).

Neste exemplo, veremos como utilizar o PHP para gerar uma senha aleatória, randômica, em nosso site.

NOTA: no código abaixo, estarei utilizando a numeração nas linhas apenas para melhor visualização e explicação do código. Não digitem estes números de linhas em seu código.

1. <?php
2.
3.  $CaracteresAceitos = 'abcdxywzABCDZYWZ0123456789';
4.
5.  $max = strlen($CaracteresAceitos)-1;
6.
7.  $password = null;
8.
9.  for($i=0; $i < 8; $i++) {
10.
11.   $password .= $CaracteresAceitos{mt_rand(0, $max)};
12.
13.  }
14.
15.  echo $password;
16.
17. ?>


Vamos a explicação:

Linha 1:
Abrimos a TAG do PHP

Linha 3:
Criamos uma variável de nome $CaracteresAceitos que irá armazenar letras e números necessários para gerar nossa senha.

Linha 5:
Criamos a variável $max e utilizamos a função "strlen" para contar quantos caracteres a variável $CaracteresAceitos tem.

Linha 7:
Criamos a variável $password e atribuímos a ela o valor null

Linha 9:
Criamos um loop para que nossa senha tenha o tamanho máximo de 8 caracteres

Linha 11:
Concatenamos (.=) a variável $CaracteresAceitos em nossa variável $password, e utilizamos a função mt_rand() para gerar uma senha aleatória, baseada no conteúdo da variável $CaracteresAceitos

Linha 13:
Fechamos a chave do loop

Linha 15:
Utilizamos o echo para exibir o novo valor da variável $password, gerada de forma randômica

Linha 17:
Fechamos a TAG do PHP.

Espero que tenham gostado do artigo, até a próxima vez ;)

Links relacionados

Samir de França Moura <sfm.com@hotmail.com>
E depois que eu digitar isso tudo, o que faço!? Devi ter explicado né. Não adiantou de nada.
Bom, se você digitou "tudo isto", deveria salvar o arquivo e testar em seu servidor. O intuito do artigo é explicar como se gera uma senha aleatória com o PHP, e fazer uso dela como bem entender, seja em formulários de cadastro, recuperação de senha, etc.
Márcio <ono@ono.com>
O cara abaixo é bem burro... mais explicado do que isso, impossível..
Valeu Bull
Muito bom o artigo. Direto e Objetivo.
Valeu!!!
Adriano Antunes de Oliveira <sosantunes@gmail.com>
Desculpe Samir mas descordo de sua opinião o artigo foi muito bom bem explicadinho parabéns pelo artigo
na boa o de cima ai , ele explicou pra quem já entende um pouco de php e já sabe oque fazer com o contúdo do artigo relacionado e apenas não sabia aonde encontrar algo do genero .
Sendo para usuarios experientes e não para novatos .
Solução simples, leve e objetiva.
Parabéns e Obrigado
Ótima dica!
Parabéns! Ficou muito bom, vou usá-lo em um sistema que estou fazendo em PHP.

Abraços
Alexandre Guimarães Sarmento <alexandre890@yahoo.com.br>
Excelente dica!
Parabéns!
Rafael Dias <rdias86@gmail.com>
Perfeito! Fiz umas pequenas adaptações e transformeu em uma função onde pode escolher tamanho e tipo de caracteres.

Mt bom!
Obrigado pela aula. Vou testar agora.
Versão em forma de função:

/
Gera uma senha aleatória do comprimento de length

@param int length
@return String
/
function geraSenha(length){
CaracteresAceitos = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
max = strlen(CaracteresAceitos)-1;
password = '';

for(i=0; i < length; i)
password .= CaracteresAceitos{mt_rand(0, max)};

return password;
}

DICA: Na hora de chamar a função vc pode usar o mt_rand para gerar senhas de tamanho aleatório.

senha = geraSenha(mt_rand(5, 8));
Vai gerar senhas de tamanho aleatório entre 5 e 8
<?php
class SENHA{
public CaracteresAceitos,password;

public function __construct() {
this->CaracteresAceitos = 'abcdekxwyzABCDEKXWYZ0123456789';
this->password = null; // só pra garantir a inicialização na criação do objeto.
}

public function out(maxC=8){
this->password = null; // aqui é pra limpar resetar a var a cada nova chamada no mesmo objeto.
max = strlen(this->CaracteresAceitos)-1;
for(i=0; i < maxC; i) this->password .= this->CaracteresAceitos{mt_rand(0, max)};
return this->password;
}
}

senha = new SENHA;
// senha->out(COMPRIMENTO DA SENHA)
echo "Cadastro efetuado, sua senha inicial é ( ".senha->out(12)." ), troque-a assim que possível.<BR>";
// ou atribuir a uma variável
pass=senha->out(8);
echo pass;
?>
Fernando Luis <nando2.luc@hotmail.com>
CARRAA MUITOOO OBRIGADOOOOOOO TAVA PRECISANDO DISSO FAIZ TEMPO.
VLWWWWWWWWWWWWWWWW
Ótimo seu tutoral....Muito bem explicado...

Muito obrigada pela ajuda.
felipe alexandre rodrigues <felipe.alrodrigues@gmail.com>
Mto bom!
Max William <raziel@sots.com.br>
Exatamente o que eu precisava =)
Exelente artigo !








Um produto Detetive.net