Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ai pessoal estou aqui com um problema, estou a fazer um sistema de "Esqueçeu a Senha", ele esta a funcionar e tal envia o email e tudo o problema é que as senhas na base de dados estão encriptadas com md5, e quando o user recebe o email a dizer para recuperar a senha elas estão encriptadas, como é que faço para mostrar a senha sem ser encriptada? :/
Vou deixar aqui o codigo para verem :)
<?php
$email=htmlspecialchars($_POST['rpassword']);
$dados = mysql_query("SELECT pass FROM utilisadores WHERE email=\"$email\"");
while($linha = mysql_fetch_array($dados)){
$password = $linha["pass"];
}
if($email!=""){
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$subject = "Recuperar a tua password";
$mensagem = "Ola, a tua password é $password...";
mail($email,$subject,$mensagem,$headers);
}
?>
<form action="" method="post">
<input type="text" name="rpassword">
<br />
<input type="submit" value="Recuperar Password">
</form>e qual seria a solução? :/
A solução é gerar outra senha e enviar para o e-mail do usuário.
MD5 é uma criptografia do tipo hash de um sentido só, ou seja, você não consegue partir do hash calculado e chegar na string original.
hmm okay tem como mostrar mais ao menos como devo fazer o codigo? :P
Um passo-a-passo rápido.
http://www.domain.com/password/reset/token/<SENHA_MD5_AQUI>
Se não estiver usando URL's Amigáveis pode ser também:
http://www.domain.com/password.php?action=reset&token=<SENHA_MD5_AQUI>
Nota: Se a forma como você localizou o registro do usuário for diferente do email, você terá que localizá-lo no banco, a fim de obter o endereço. Mas acho que isso é óbvio, né? :P
Seja no arquivo password.php, seja na ação correspondente à rota de URL Amigável, você:
Pronto. :grin:
Mas se você achar que é muito trabalho, ao invés de usar MD5, use um dos algoritimos de criptografia fornecidos pela Biblioteca MCrypt, que são em duas vias, isto é, podem ser encriptados e decriptados sem intervenção maciça do usuário.
Eu particularmente acho que seria mais lógica do que programação, tipo... dá pra fazer de várias formas.
Não sei como estão as suas tabelas, mas daria pra fazer...
e por aí vai, tem vários detalhes para ver...
falou...
Obrigado aos dois :), vou optar pêla sugestão do Bruno Augusto :P
eu utilizo um sistema onde ao o administrador cadastrar o usuario, a senha vai nula, ae o usuario ao logar ja digitar a senha dele a mesma eh cadastrada no banco...porem pode fazer como os amigos acima disseram, envia um email com um link com um tokem, para o usuario, quando o usuario acessar akele link, ele reseta a senha dele e insere outra...como faz o wordpress...
Prontos, ja esta a funcionar =) obrigado a todos :)
"Não existe uma função PHP que desencripte md5".
você vai ter que bolar outra solução