Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fsales_123

recuperar senha

Recommended Posts

Você já tem o sistema de login?

Se você fez o sistema de login, não terá problemas em criar o módulo de recuperar senha. Pode gerar a nova senha usando uniqid(), por exemplo. Depois envie a senha por email (recomendo o PHPMailer)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu também estou testando um scrpt para recuperar senha ate então esta fazendo a recuperação a unica coisa que esta dando erro e que não esta enviando o email

Primeiro eu criei uma tabela

CREATE TABLE recuperacao (
  utilizador  VARCHAR(255) NOT NULL,
  confirmacao VARCHAR(40) NOT NULL,
  KEY(utilizador, confirmacao)
)

e este o script com o nome de redefine_senha.php

<h3>Perdi a senha</h3>
<?php
  if( !empty($_POST) ){
    // processar o pedido
    mysql_connect('localhost', 'root', '');  // ligar à base de dados
    mysql_select_db('sua db');  // escolher a base de dados pretendida
 
    $user = mysql_real_escape_string($_POST['user_email']);
    $q = mysql_query("SELECT * FROM se_users WHERE user_email = '$user'");
 
    if( mysql_num_rows($q) == 1 ){
      // o utilizador existe, vamos gerar um link único e enviá-lo para o e-mail
 
      // gerar a chave
      $chave = sha1(uniqid( mt_rand(), true));
 
      // guardar este par de valores na tabela para confirmar mais tarde
      $conf = mysql_query("INSERT INTO recuperacao VALUES ('$user', '$chave')");
	  echo "INSERT INTO recuperacao VALUES ('$user', '$chave')";
 
      if( mysql_affected_rows() == 1 ){
 
        $link = "http://www.seusite.com.br/recuperar_senha.php?utilizador=$user&confirmacao=$chave";
 
        if( mail($user, 'Recuperação da senha', 'Olá '.$user.', visite este link '.$link) ){
          echo '<p>Foi enviado um e-mail para o seu endereço, onde poderá encontrar um link único para alterar a sua senha</p>';
 
        } else {
          echo '<p>Houve um erro ao enviar o email </p>';
 
        }
 
		// Apenas para testar o link, no caso do e-mail falhar
		echo '<p>Link: '.$link.' (apresentado apenas para testes; nunca expor a público!)</p>';
 
      } else {
        echo '<p>Não foi possível gerar o endereço único</p>';
 
      }
    } else {
	  echo '<p>Esse utilizador não existe</p>';
	}
  } else {
    // mostrar formulário de recuperação
?>
<form method="post">
  <label for="email">E-mail:</label>
  <input type="text" name="user_email" id="user_username" />
  <input type="submit" value="Recuperar" />
</form>
<?php
  }
?>

e este outro com o nome recuperar_senha.php

<h3>Alterar senha</h3>
<?php
  if( empty($_GET['utilizador']) || empty($_GET['confirmacao']) )
    die('<p>Não é possível alterar a password: dados em falta</p>');
 
  mysql_connect('localhost', 'root', '');  // ligar à base de dados
  mysql_select_db('sua db');  // escolher a base de dados pretendida
 
  $user = mysql_real_escape_string($_GET['utilizador']);
  $hash = mysql_real_escape_string($_GET['confirmacao']);
 
  $q = mysql_query("SELECT COUNT(*) FROM recuperacao WHERE utilizador = '$user' AND confirmacao = '$hash'");
 
  if( mysql_result($q, 0, 0) == "1" ){
    // os dados estão corretos: eliminar o pedido e permitir alterar a password
    mysql_query("DELETE FROM recuperacao WHERE utilizador = '$user' AND confirmacao = '$hash'");
 
    echo 'Sucesso! (Mostrar formulário de alteração de password aqui)';   
 
  } else {
    echo '<p>Não é possível alterar a password: dados incorretos</p>';
 
  }
 
?>

como eu falei a unica coisa que eu não estou conseguindo e que seja enviado o email talvez possamos resolver junto

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.