Ir para conteúdo

POWERED BY:

Arquivado

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

vargas21

Recuprar Senha por Email

Recommended Posts

Estou tentando fazer com que o usuário do meu site possa recuperar a senha de acesso em caso de esquecimento, porém, não está dando certo.

 

Segue o cód:

<?php
$host = "******";
$user = "******";
$pass = "*******";
$banco = "********";
$conexao = mysql_connect($host, $user, $pass) or die(mysql_error());
mysql_select_db($banco) or die(mysql_error());
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Recuperar Senha</title>
</head>
<body>
<?php
//Criando Variaveis//
if(isset($_POST['enviar'])) {
$email = $_POST['email'];

//Buscar dados no SQL//

$sql=mysql_query("SELECT * FROM usuarios WHERE email = '$email'");
$verifica=mysql_num_rows($sql);
if($verifica == 1){ 

$emailsql = $dados['email'];
$senha = $dados['senha'];
$nome = $dados['nome'];
}
//Se os E-mails Forem Iguais//

if ($email == $emailsql) {
    $mensagem = "Presado sr. ".$nome.",<br><br>";
    $mensagem .= "Esta mensagem foi enviada ao senhor pois solicitou a recuperação de seus dados de login em nosso site. Abaixo seguem seus dados:";
    $mensagem .= "<p>Login: ".$nome."<br>";
    $mensagem .= "Senha: ".$senha."</p>";
    
    $headers = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
    
    mail($email, "Recuperação de Senha", $mensagem, $headers);
    
    echo "<b>Seus dados foram enviados com sucesso!</b>";
    }
//Caso os E-mails não são Iguais//
    else{
    echo "<b>Os dados informados nao sao compativeis com os cadastrados! Tente novamente!</b>";
    }
}
?>
<form action="<?php $PHP_SELF ?>" method="post" name="recupera">

<h1>
  <div align="center">Recuperar de Senha</div>
</h1>

<p align="center">Preencha corretamente os dados abaixo para que sua senha seja encaminhada ao seu e-mail:</p>
<div align="center"><br />
E-mail: <input type="text" name="email" size="30"><br /><br />
<input type="submit" name="enviar" value="Recuperar!"></div>
</form>
</body>
</html>

Aparece a mensagem: Os dados informados nao sao compativeis com os cadastrados! Tente novamente! Quando eu entro com o email para procurar.

Alguém poderia me dizer oq fazer?

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro.. isso aqui vc não precisa fazer if ($email == $emailsql) { pois vc já verificou se existe o E-mail if($verifica == 1){

 

Então pode juntar tudo..

 

Disso..

	if($verifica == 1){ 
	
		$emailsql = $dados['email'];
		$senha = $dados['senha'];
		$nome = $dados['nome'];
	}
	//Se os E-mails Forem Iguais//
	
	if ($email == $emailsql) {
		$mensagem = "Presado sr. ".$nome.",<br><br>";
		$mensagem .= "Esta mensagem foi enviada ao senhor pois solicitou a recuperação de seus dados de login em nosso site. Abaixo seguem seus dados:";
		$mensagem .= "<p>Login: ".$nome."<br>";
		$mensagem .= "Senha: ".$senha."</p>";
		
		$headers = "MIME-Version: 1.0\r\n";
		$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
		
		mail($email, "Recuperação de Senha", $mensagem, $headers);
		
		echo "<b>Seus dados foram enviados com sucesso!</b>";
	} else {
		echo "<b>Os dados informados nao sao compativeis com os cadastrados! Tente novamente!</b>";
	}

para isso

	if($verifica == 1){ 
	
		$emailsql = $dados['email'];
		$senha = $dados['senha'];
		$nome = $dados['nome'];

		$mensagem = "Presado sr. ".$nome.",<br><br>";
		$mensagem .= "Esta mensagem foi enviada ao senhor pois solicitou a recuperação de seus dados de login em nosso site. Abaixo seguem seus dados:";
		$mensagem .= "<p>Login: ".$nome."<br>";
		$mensagem .= "Senha: ".$senha."</p>";
		
		$headers = "MIME-Version: 1.0\r\n";
		$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
		
		mail($email, "Recuperação de Senha", $mensagem, $headers);
		
		echo "<b>Seus dados foram enviados com sucesso!</b>";
	} else {
		echo "<b>Os dados informados nao sao compativeis com os cadastrados! Tente novamente!</b>";
	}

Imprime no final as variaveis $emailsql $senha $nome e vê se ele está trazendo algo.. que pode ser alguma coisa na sua consulta, verifica se o email esta sendo salvo sem nenhum espaço no banco, que tudo isso influencia

.
.
.
	} else {
		echo "<b>Os dados informados nao sao compativeis com os cadastrados! Tente novamente!</b>";
	}
}

echo "emailsql:".$emailsql."<br>";
echo "senha:".$senha."<br>";
echo "nome:".$nome."<br>";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outra coisa, na tabela do banco de dados, caso seu campo de email não seja UNIQUE, pode ser que exista mais de 1 email igual, portanto, essa condicional:

if($verifica == 1){ // se existir 1 coluna, nem menos nem mais
    .
    .
    .
}

no caso de haver mais de um email igual no banco seria falsa e entraria no else:

} else {
		echo "<b>Os dados informados nao sao compativeis com os cadastrados! Tente novamente!</b>";
	}

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Primeiro.. isso aqui você não precisa fazer if ($email == $emailsql) { pois você já verificou se existe o E-mail if($verifica == 1){

 

Então pode juntar tudo..

 

Disso..

	if($verifica == 1){ 
	
		$emailsql = $dados['email'];
		$senha = $dados['senha'];
		$nome = $dados['nome'];
	}
	//Se os E-mails Forem Iguais//
	
	if ($email == $emailsql) {
		$mensagem = "Presado sr. ".$nome.",<br><br>";
		$mensagem .= "Esta mensagem foi enviada ao senhor pois solicitou a recuperação de seus dados de login em nosso site. Abaixo seguem seus dados:";
		$mensagem .= "<p>Login: ".$nome."<br>";
		$mensagem .= "Senha: ".$senha."</p>";
		
		$headers = "MIME-Version: 1.0\r\n";
		$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
		
		mail($email, "Recuperação de Senha", $mensagem, $headers);
		
		echo "<b>Seus dados foram enviados com sucesso!</b>";
	} else {
		echo "<b>Os dados informados nao sao compativeis com os cadastrados! Tente novamente!</b>";
	}

para isso

	if($verifica == 1){ 
	
		$emailsql = $dados['email'];
		$senha = $dados['senha'];
		$nome = $dados['nome'];

		$mensagem = "Presado sr. ".$nome.",<br><br>";
		$mensagem .= "Esta mensagem foi enviada ao senhor pois solicitou a recuperação de seus dados de login em nosso site. Abaixo seguem seus dados:";
		$mensagem .= "<p>Login: ".$nome."<br>";
		$mensagem .= "Senha: ".$senha."</p>";
		
		$headers = "MIME-Version: 1.0\r\n";
		$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
		
		mail($email, "Recuperação de Senha", $mensagem, $headers);
		
		echo "<b>Seus dados foram enviados com sucesso!</b>";
	} else {
		echo "<b>Os dados informados nao sao compativeis com os cadastrados! Tente novamente!</b>";
	}

Imprime no final as variaveis $emailsql $senha $nome e vê se ele está trazendo algo.. que pode ser alguma coisa na sua consulta, verifica se o email esta sendo salvo sem nenhum espaço no banco, que tudo isso influencia

.
.
.
	} else {
		echo "<b>Os dados informados nao sao compativeis com os cadastrados! Tente novamente!</b>";
	}
}

echo "emailsql:".$emailsql."<br>";
echo "senha:".$senha."<br>";
echo "nome:".$nome."<br>";

Agora não dá mais o erro de encontrar o email. Funciona perfeitamente, porém, o email não é enviado. Pode ser alguma coisa com o init.php?

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.