Ir para conteúdo

POWERED BY:

Arquivado

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

luiz fernando 78

Esqueci a Senha | Sistema em PHP

Recommended Posts

Então, estou querendo criar um sistema em php do ESQUECI MINHA SENHA.

O que pretendo é:

O user informar o email, então esse email é verificado na DB, e é enviado uma nova senha gerada para o email dele!

Código que consegui: (Sem edições)

 

<?php

include "config.php";

$recupera = $_POST['recupera'];
$email = $_POST['email'];

switch($recupera){

case "recupera":
	recupera_senha($email);
	break;

default:
	include "formulario_senha_perdida.html";
	break;
}

function recupera_senha($email){

if(!isset($email)){

       echo "Você esqueceu de preencher seu email.<br />
		<strong>Use o mesmo email que utilizou em seu cadastro.</strong><br /><br />"; 

	include "formulario_senha_perdida.html";

	exit();

}

// Checando se o email informado está cadastrado

$sql_check = mysql_query("SELECT * FROM usuarios WHERE email='{$email}'");
$sql_check_num = mysql_num_rows($sql_check);

if($sql_check_num == 0){

	echo "Este email não está cadastrado em nosso banco de dados.<br /><br />";

	include "formulario_senha_perdida.html";

	exit();

}

// Se tudo OK vamos gerar uma nova senha e enviar para o email do usuário!

function makeRandomPassword(){

	$salt = "abchefghjkmnpqrstuvwxyz0123456789";
	srand((double)microtime()*1000000);

	$i = 0;

	while ($i <= 7){

		$num = rand() % 33;
		$tmp = substr($salt, $num, 1);
		$pass = $pass . $tmp;
		$i++;

	}

	return $pass;

}

$senha_randomica = makeRandomPassword();

$senha = md5($senha_randomica);

$sql = mysql_query("UPDATE usuarios SET senha='{$senha}' WHERE email ='{$email}'");

$headers = "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
$headers .= "From: Teu Domínio - Webmaster<teuemail@domíniodoteuemail.com>"; //COLOQUE TEU EMAIL

$subject = "Sua nova senha em teusite.com";
$message = "Olá, redefinimos sua senha.<br /><br />

<strong>Nova Senha</strong>: {$senha_randomica}<br /><br />

<a href='http://www.teusite.com/formulario_login.html'>http://www.teusite.com/formulario_login.html</a><br /><br />

Obrigado!<br /><br />

Webmaster<br /><br /><br />


Esta é uma mensagem automática, por favor não responda!";

mail($email, $subject, $message, $headers);

echo "Sua nova senha foi gerada com sucesso e enviada para o seu email!<br />Por favor verifique seu email!<br /><br />";

include "formulario_login.html";

}

?>

HTML:

<!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=iso-8859-1" />
<title>Formulário Nova Senha</title>
</head>

<body>

<form name="form1" method="post" action="gerar_nova_senha.php">

Por favor digite o seu email que está cadastrado em nosso banco de dados;<br />

<input name="email" type="text" id="email" />
<input name="recupera" type="hidden" id="recupera" value="recupera" />

<input type="submit" name="Submit" value="Gerar Senha" />
</form>

</body>
</html>

 

Até ai tudo bem, mas não consigo adaptar esse código para meu BANCO DE DADOS!

Print Dele:]

zuxsl.png

http://i42.tinypic.com/zuxsl.png

Infos: Tabela: users, coluna da senha: password, coluna do email: mail .

 

 

TEnto configurar mas aparece o seguinte erro:

2u4o75y.png

http://i43.tinypic.com/2u4o75y.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que deu pra ver, você tem esse PHP e o HTML na mesma página, não?

Se sim, coloque todo o código PHP, com a exceção do include entre:

if($_SERVER['REQUEST_METHOD'] == 'POST'){
// código aqui...
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que deu pra ver, você tem esse PHP e o HTML na mesma página, não?

Se sim, coloque todo o código PHP, com a exceção do include entre:

if($_SERVER['REQUEST_METHOD'] == 'POST'){
// código aqui...
}

São páginas separadas !

Desculpa esqueci de especificar!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloquei!

Olha como ficou meu código:

 

<?php var_dump($_POST);  include "config.php";  $recupera = $_POST['recupera']; $email = $_POST['mail'];  switch($recupera){  	case "recupera": 		recupera_senha($email); 		break;  	default: 		include "formulario_senha_perdida.html"; 		break; }  function recupera_senha($email){  	if(!isset($email)){          echo "Você esqueceu de preencher seu email.<br /> 			<strong>Use o mesmo email que utilizou em seu cadastro.</strong><br /><br />";   		include "formulario_senha_perdida.html";  		exit();  	}  	// Checando se o email informado está cadastrado 		 	$sql_check = mysql_query("SELECT * FROM users WHERE mail='{$email}'"); 	$sql_check_num = mysql_num_rows($sql_check);  	if($sql_check_num == 0){  		echo "Este email não está cadastrado em nosso banco de dados.<br /><br />";  		include "formulario_senha_perdida.html";  		exit();  	} 	 	// Se tudo OK vamos gerar uma nova senha e enviar para o email do usuário!  	function makeRandomPassword(){  		$salt = "abchefghjkmnpqrstuvwxyz0123456789"; 		srand((double)microtime()*1000000);  		$i = 0;  		while ($i <= 7){  			$num = rand() % 33; 			$tmp = substr($salt, $num, 1); 			$pass = $pass . $tmp; 			$i++;  		}  		return $pass;  	}  	$senha_randomica = makeRandomPassword();  	$senha = md5($senha_randomica);  	$sql = mysql_query("UPDATE users SET password='{$senha}' WHERE mail ='{$email}'");  	$headers = "MIME-Version: 1.0\n"; 	$headers .= "Content-type: text/html; charset=iso-8859-1\n"; 	$headers .= "From: Teu Domínio - Webmaster<teuemail@domíniodoteuemail.com>"; //COLOQUE TEU EMAIL  	$subject = "Sua nova senha em teusite.com"; 	$message = "Olá, redefinimos sua senha.<br /><br />  	<strong>Nova Senha</strong>: {$senha_randomica}<br /><br />  	<a href='http://www.teusite.com/formulario_login.html'>http://www.teusite.com/formulario_login.html</a><br /><br />  	Obrigado!<br /><br />  	Webmaster<br /><br /><br />   	Esta é uma mensagem automática, por favor não responda!";  	mail($email, $subject, $message, $headers);  	echo "Sua nova senha foi gerada com sucesso e enviada para o seu email!<br />Por favor verifique seu email!<br /><br />";  	include "formulario_login.html";  }  ?>

 

Quando insiro o email e solicito a nova senha aparece uma mensagem ao topo da página:

 

array  'email' => string 'luiz.garra@live.com' (length=19)  'recupera' => string 'recupera' (length=8)  'Submit' => string 'Gerar Senha' (length=11)

Não resultou ainda, até então, grato!

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.