|
||
|
|
| Conheça o Plugfeed | » Início » Programação » PHP » Gerar senha aleatória em PHP --> |
|
Avaliação:
![]() ![]() ![]() ![]() | Publicado em: 31/10/2006Gerar 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 ;) Artigos relacionados
Links relacionados
Este artigo é a parte 2 de 4 da seguinte série:
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.
![]() ![]() ![]() ![]() ![]() Bill <bill@referencial.info>
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 ![]() ![]() ![]() ![]() ![]() Wagner <wsilva@ajato.com.br>
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
![]() ![]() ![]() ![]() ![]() carlos <mestredokknd@yahoo.com.br>
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 . ![]() ![]() ![]() ![]() ![]() Silas <silasq@gmail.com>
Solução simples, leve e objetiva.
Parabéns e Obrigado ![]() ![]() ![]() ![]() ![]() André <andregufc@gmail.com>
Ótima dica!
![]() ![]() ![]() ![]() ![]() Bruno Alves <brunocia2000@terra.com.br>
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! ![]() ![]() ![]() ![]() ![]() Daniel <itamar.franco@gmail.com>
Obrigado pela aula. Vou testar agora.
![]() ![]() ![]() ![]() ![]() Bruno <guimaraescarneiro@gmail.com>
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 ![]() ![]() ![]() ![]() ![]() Octane F/X <celo.bauru@hotmail.com>
<?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 ![]() ![]() ![]() ![]() ![]() Gilmara <gilmaramaquine@gmail.com>
Ó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 ! ![]() ![]() ![]() ![]() ![]() ![]() |
|
![]() |
|
|