Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Recuperar Senha Esquecida


crazymania

Pergunta

Pessoal estou tentando criar uma página para recuperação de senha, não tenho realmente muito conhecimento em PHP estou me virando como eu posso e consigo a base da minha tabela de membros é assim:

CREATE TABLE `membros` (
  `id` int(5) unsigned NOT NULL auto_increment,
  `nome` varchar(255) default NULL,
  `email` varchar(255) default NULL,
  `login` varchar(255) default NULL,
  `senha` varchar(255) default NULL,
  `nivel` int(5) unsigned default '1',
  `ativo` int(5) unsigned default '1',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=120 ;

Estou tentando fazer a página (recupera.php), seguindo um código que um companheiro enviou, mais não estou conseguindo, será que alguém poderia me dar uma dica de como chegar a execução correta do código.

Sgeu abaixo o código:

<?php

include("config.php");

?>

<html>

<head>

<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">

<title>Recuperação de Senha</title>

</head>

<body>

<?php

if(isset($_POST["enviar"])) {

$login = $_POST["login"];

$emailform = $_POST["email"];

$buscasql = "SELECT * FROM banco WHERE login=$login'";

$querysql = mysql_query($buscasql);

$dados = mysql_fetch_array($querysql);

$emailsql = $dados["email];

$senha = $dados["senha"];

$nome = $dados["nome"];

if ($emailform == $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 portal. Abaio seguem seus dados:";

$mensagem .= "<p>Login: ".$login."<br>";

$mensagem .= "Senha: ".$senha."</p>";

$headers = "MIME-Version: 1.0\r\n";

$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

mail($emailform, "Recuperação de Senha", $mensagem, $headers);

echo "Seus dados foram enviados com sucesso!";

}else{

echo "Os dados informados não são compatíveis com os cadastrados! Tente novamente!";

}

}else {

?>

<form action="<?php $PHP_SELF ?>" method="post" name="recupera">

<h1>Recuperação de Senha</h1>

<p>Preencha corretamente os dados abaixo para que sua senha seja encaminhada ao seu e-mail:</p>

Login: <input type="text" name="login" size="35"><br /> <br />

E-mail: <input type="text" name="email" size="30"><br /><br />

<input type="submit" name="enviar" value="Recuperar!">

</form>

<?

}

?>

</body>

</html>

Editado por Jonathan Queiroz
Link para o comentário
Compartilhar em outros sites

19 respostass a esta questão

Posts Recomendados

  • 0

Não tenho certeza, mas acho que o erro está aqui:

$buscasql = "SELECT * FROM banco WHERE login='$login'";
Tente deixar assim:
$buscasql = "SELECT * FROM banco WHERE login=".$login."";
Se não der, deixe assim:
$buscasql = "SELECT * FROM banco WHERE login=$login";

Link para o comentário
Compartilhar em outros sites

  • 0

Uma pergunta:

Você está usando este script do jeito que você postou?

O (recupera.php) está igualzinho ao código que você escreveu aqui?

Se sim, mude a linha:

$buscasql = "SELECT * FROM banco WHERE login='$login'";
para
$buscasql = "SELECT * FROM membros WHERE login='$login'";

Se não, poste o erro por extenso, por favor.

Abraços, :D

Editado por Cerock
Link para o comentário
Compartilhar em outros sites

  • 0

Mude o error_reporting para E_ALL,ligue o display_errors e exiba qualquer exceção (essas podendo ou não contar como erros [bom sendo por favor]).Poste os erros aqui.

---

Não tenho certeza, mas acho que o erro está aqui:

$buscasql = "SELECT * FROM banco WHERE login='$login'";
Tente deixar assim:
$buscasql = "SELECT * FROM banco WHERE login=".$login."";

Nada a ver...desse jeito ai que está errado...o.O.

E cara...quando você usa aspas duplas,o PHP procura e troca todas as ocorrencias de variaveis por seus respectivos valores.Não tem porque concatenar a variavel ali...

Editado por proust
Link para o comentário
Compartilhar em outros sites

  • 0

Olá Cerock, eu estava tão zureta de tanto ler código que realmente comi bola no "select * FROM membros login'$login'"; - Coloquei (banco). Voc~E ajudou muito mesmo muito obrigado.

Agora você preeche os dados com o apelido e o e-mail na página recupera.php e pede para recuperar, ele diz o seguinte:

Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in C:\AppServ\www\conteudo\recupera.php on line 41

Seus dados foram enviados com sucesso!

Mais ao abrir o meu e-mail não recebi nenhum e-mail será que é por estar rodando em localhost?

Sds,

Link para o comentário
Compartilhar em outros sites

  • 0

Eu já tive problemas ao enviar um e-mail com a função mail(). Pois lá no php.ini tinha que configurar uma conta para enviar o e-mail. Eu nunca consegui configurar. =P

Eu recomendo você usar uma classe SMTP.

Quer um exemplo?

Arquivo da classe SMTP:

smtp.class.php

<?

// Autor Desconhecido

class Smtp{

var $conn;
var $user;
var $pass;
var $debug;

function Smtp($host){
$this->conn = fsockopen($host, 25, $errno, $errstr, 30);
$this->Put("EHLO $host");
}
function Auth(){
$this->Put("AUTH LOGIN");
$this->Put(base64_encode($this->user));
$this->Put(base64_encode($this->pass));
}
function Send($to, $from, $subject, $msg){

$this->Auth();
$this->Put("MAIL FROM: " . $from);
$this->Put("RCPT TO: " . $to);
$this->Put("DATA");
$this->Put($this->toHeader($to, $from, $subject));
$this->Put("\r\n");
$this->Put($msg);
$this->Put(".");
$this->Close();
if(isset($this->conn)){
return true;
}else{
return false;
}
}
function Put($value){
return fputs($this->conn, $value . "\r\n");
}
function toHeader($to, $from, $subject){
$header = "Message-Id: <". date('YmdHis').".". md5(microtime()).".". strtoupper($from) ."> \r\n";
$header .= "From: <" . $from . "> \r\n";
$header .= "To: <".$to."> \r\n";
$header .= "Subject: ".$subject." \r\n";
$header .= "Date: ". date('D, d M Y H:i:s O') ." \r\n";
$header .= "X-MSMail-Priority: High \r\n";
$header .= "Content-Type: Text/HTML";
return $header;
}
function Close(){
$this->Put("QUIT");
if($this->debug == true){
while (!feof ($this->conn)) {
fgets($this->conn) . "<br>\n";
}
}
return fclose($this->conn);
}
}

?>
Você coloca ela na mesma pasta do recupera.php. Dai dentro do arquivo recupera.php, de um include no smtp.class.php e configure o servidor (dentro do recupera.php). Um exemplo, copie e cole isto no inicio do seu recupera.php.
<?

include("smtp.class.php");

/* Configuração da classe.smtp.php */ 
$host = "smtp.mail.yahoo.com.br"; /*qualquer servidor de SMTP, eu usei o do Yahoo */ 
$smtp = new Smtp($host);
$smtp->user = "gugax@ymail.com"; /*o usuário do SMTP, seu e-mail do yahoo */ 
$smtp->pass = "13/gugao"; /* senha do usuário do SMTP, sua senha de acesso ao seu e-mail no yahoo*/ 
$smtp->debug =true; /* ativar a autenticação SMTP*/

?>
E na hora de enviar invez de usar a função mail(), use a SMTP:
$smtp->Send("Para","Seu e-mail do yahoo","Assunto","Corpo da mensagem");
Para este comando "$smtp->Send()" funcionar, você deve colar a configuração e incluir a classe smtp dentro do recupera.php. Agora vou mostrar como fica o seu arquivo recupera.php
<?php

include("config.php");
include("smtp.class.php");

/* Configuração da classe.smtp.php */ 
$host = "smtp.mail.yahoo.com.br"; /*qualquer servidor de SMTP, eu usei o do Yahoo */ 
$smtp = new Smtp($host);
$smtp->user = "seue-mail@yahoo.com.br"; /*o usuário do SMTP, seu e-mail do yahoo */ 
$smtp->pass = "suasenha"; /* senha do usuário do SMTP, sua senha de acesso ao seu e-mail no yahoo*/ 
$smtp->debug =true; /* ativar a autenticação SMTP*/
?>

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>Recuperação de Senha</title>
</head>
<body>

<?php

if(isset($_POST["enviar"])) {

$login = $_POST["login"];
$emailform = $_POST["email"];

$buscasql = "SELECT * FROM membros WHERE login='$login'";
$querysql = mysql_query($buscasql);

$dados = mysql_fetch_array($querysql);

$emailsql = $dados["email"];
$senha = $dados["senha"];
$nome = $dados["nome"];

if ($emailform == $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 portal. Abaio seguem seus dados:";
$mensagem .= "<p>Login: ".$login."<br>";
$mensagem .= "Senha: ".$senha."</p>";

$smtp->Send("$emailform","Seu e-mail do yahoo","Recuperação de Senha","$mensagem"); //Os readers já estão configurados na classe smtp (smtp.class.php)

echo "Seus dados foram enviados com sucesso!";
}else{
echo "Os dados informados não são compatíveis com os cadastrados! Tente novamente!";
}
}else {
?>

<form action="<?php $PHP_SELF ?>" method="post" name="recupera">

<h1>Recuperação de Senha</h1>

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

Simples não?

Poste aí o resultado.

Abraços, Cerock. :D

Editado por Cerock
Link para o comentário
Compartilhar em outros sites

  • 0

Olá Cerock, desculpa hoje fiquei fora o dia todo cheguei agora pouco.

Cara antes de mais nada quero agradecer sua ajuda, muito obrigado por estar perdendo seu tempo me ajudando valeu mesmo. Vamos lá eu fiz os testes e mantendo desta forma.

$host = "smtp.mail.cerettiinformatica.com.br"; /*qualquer servidor de SMTP, eu usei o do Yahoo */ (ele da vários erros). Ai resolvi testar dessa forma;

$host = "mail.cerettiinformatica.com.br"; /*qualquer servidor de SMTP, eu usei o do Yahoo */ (tirando o "smtp" deixando apenas mail, do servidor da loja que trabalho que usa "mail". O formulário abriu de boa coloquei o apelido e e-mail para teste, deu a mensagem "Seus dados foram enviados com sucesso!", mais dei uns 10 minutos de espera e abri o meu e-mail, mais a mensagem não havia chegado, estou dando uma olhada para ver se consigo achar esse erro de envio, mais até agora não achei.

Link para o comentário
Compartilhar em outros sites

  • 0

Você somente trocou o host?

Pra funcionar, o servidor de SMTP deve existir.

O servidor de SMTP do yahoo é smtp.mail.yahoo.com.br.

Você usou o da sua loja, este server mail.cerettiinformatica.com.br deve existir.

Dai você tem que por uma conta de e-mail deste servidor. (ex.: crazymania@cerettiinformatica.com.br)

E a senha deste usuário de smtp. (A senha que você usa para acessar este e-mail.)

Olha só

Este endereço: http://www.gugax.com foi hospedado num site com WebMail (não sei se todo site de hospedagem tem um webmail).

O servidor de smtp foi enviado quando o site foi hospedado. É mail.gugax.com. (Não tem o smtp, mas é o servidor de smtp do domínio).

O administrador deste site tem um e-mail (@gugax.com), que serve como Usuário do SMTP.

E a senha deste e-mail, que é a senha do Usuário do SMTP.

Todos os dados devem ser válidos para esta classe funcionar.

O servidor SMTP deve existir, o e-mail deve existir e a senha deve ser verdadeira.

-

Você deve ter usado o servidor smtp correto, mas não um usuário e senha corretos.

Um exemplo válido para você seria:

* Configuração da classe.smtp.php */ 
$host = "mail.cerettiinformatica.com.br"; /*SERVIDOR VÁLIDO */ 
$smtp = new Smtp($host);
$smtp->user = "crazymania@cerettiinformatica.com.br"; /*E-MAIL/USUÁRIO VÁLIDO */ 
$smtp->pass = "1165448121"; /* SENHA DE ACESSO AO E-MAIL VÁLIDA*/ 
$smtp->debug =true; /* ativar a autenticação SMTP*/

Endenteu? Qualquer dúvida, pode postar.

Link para o comentário
Compartilhar em outros sites

  • 0

Desculpa foi exatamente assim que fiz é que acho que não expliquei corretamente:

/* Configuração da classe.smtp.php */

$host = "mail.cerettiinformatica.com.br"; /*qualquer servidor de SMTP, eu usei o do Yahoo */

$smtp = new Smtp($host);

$smtp->user = "contato@cerettiinformatica.com.br"; /*o usuário do SMTP, seu e-mail do yahoo */

$smtp->pass = "a senha pedida"; /* senha do usuário do SMTP, sua senha de acesso ao seu e-mail no yahoo*/

$smtp->debug =true; /* ativar a autenticação SMTP*/

Link para o comentário
Compartilhar em outros sites

  • 0

Já sim,

$smtp->Send("$emailform","contato@cerettiinformatica.com.br","Recuperação de Senha","$mensagem"); //Os readers já estão configurados na classe smtp (smtp.class.php)

Engraçado se eu coloco os dados errados no fomrluario e peço para me enviar os dados ele diz (Os dados informados não são compatíveis com os cadastrados! Tente novamente! ).

Significa que ele esta indo buscar informações no banco de dados. Agora o porque não esta enviando é que esta a briga estou fazendo diversos testes e ele diz que a mensagem foi enviada com sucesso mais entro no e-mail e nada chega. Estranho isso!!!

Link para o comentário
Compartilhar em outros sites

  • 0

uhuuuuuuuuuuuuuuuuuuu Cerock....

Deu certo agora meu jovem amigo você é o cara valeu mesmo pela ajuda muito obrigado mesmo se precisar de alguma coisa referente a hardware o meu e-mail para contato é esse falo hardware porque é o que manjo PHP estou começando com ajuda de vocês.... (contato@cerettiinformatica.com.br)

O erro foi meu eu coloquei o e-mail mais a senha do meu e-mail do yahoo fiquei com o yahoo na cabeça. Agora que me liguei coloquei a senha correta do e-mail usado foi que nem uma luva. Valeu mesmo amigão!!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz o teste aqui

A mensagem chegou na hora.

Com o seguinte conteúdo:

Recuperação de Senha‏

De: gugax@ymail.com

Enviada: domingo, 2 de agosto de 2009 21:14:41

Para: gugaalves_msn@hotmail.com

-

Presado sr. Guga Alves de Ribeiro,

Esta mensagem foi enviada ao senhor pois solicitou a recuperação de seus dados de login em nosso portal. Abaio seguem seus dados:

Login: gugax

Senha: gugax321

Vou postar aqui o que eu usei, é o mesmo só que com meus dados:

<?php

include("config.php");
include("smtp.class.php");

/* Configuração da classe.smtp.php */ 
$host = "smtp.mail.yahoo.com.br"; /*qualquer servidor de SMTP, eu usei o do Yahoo */ 
$smtp = new Smtp($host);
$smtp->user = "gugax@ymail.com"; /*o usuário do SMTP, seu e-mail do yahoo */ 
$smtp->pass = "MinhaSenha"; /* senha do usuário do SMTP, sua senha de acesso ao seu e-mail no yahoo*/ 
$smtp->debug =true; /* ativar a autenticação SMTP*/
?>

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>Recuperação de Senha</title>
</head>
<body>

<?php

if(isset($_POST["enviar"])) {

$login = $_POST['login'];
$emailform = $_POST['email'];

$buscasql = "SELECT * FROM usuarios WHERE usuario='$login'";
$querysql = mysql_query($buscasql);
$dados = mysql_fetch_array($querysql);

$emailsql = $dados["email"];
$senha = $dados["senha"];
$nome = $dados["nome"];

if ($emailform == $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 portal. Abaio seguem seus dados:";
$mensagem .= "<p>Login: ".$login."<br>";
$mensagem .= "Senha: ".$senha."</p>";

$smtp->Send("$emailform","gugax@ymail.com","Recuperação de Senha","$mensagem"); //Os readers já estão configurados na classe smtp (smtp.class.php)

echo "Seus dados foram enviados com sucesso!";
}else{
echo "Os dados informados não são compatíveis com os cadastrados! Tente novamente!";
}
}else {
?>

<form action="<?php $PHP_SELF ?>" method="post" name="recupera">

<h1>Recuperação de Senha</h1>

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

Editado por Cerock
Link para o comentário
Compartilhar em outros sites

  • 0

Eu havia postado em vossa resposta acima o seguinte Post:

uhuuuuuuuuuuuuuuuuuuu Cerock....

Deu certo agora meu jovem amigo você é o cara valeu mesmo pela ajuda muito obrigado mesmo se precisar de alguma coisa referente a hardware o meu e-mail para contato é esse falo hardware porque é o que manjo PHP estou começando com ajuda de vocês.... (contato@cerettiinformatica.com.br)

O erro foi meu eu coloquei o e-mail mais a senha do meu e-mail do yahoo fiquei com o yahoo na cabeça. Agora que me liguei coloquei a senha correta do e-mail usado foi que nem uma luva. Valeu mesmo amigão!!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Para mim fica aparecendo a msg: Os dados informados não são compatíveis com os cadastrados! Tente novamente!
Quando clico em Recuperar.

o que há de errado?

 

 

<?php

include("conexao_user.php");
include("smtp.class.php");

/* Configuração da classe.smtp.php */ 
$host = "smtp.mail.yahoo.com.br"; /*qualquer servidor de SMTP, eu usei o do Yahoo */ 
$smtp = new Smtp($host);
$smtp->user = "driseven@yahoo.com.br"; /*o usuário do SMTP, seu e-mail do yahoo */ 
$smtp->pass = "MINHA SENHA"; /* senha do usuário do SMTP, sua senha de acesso ao seu e-mail no yahoo*/ 
$smtp->debug =true; /* ativar a autenticação SMTP*/
?>

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>Recuperação de Senha</title>
</head>
<body>

<?php

if(isset($_POST["enviar"])) {

$login = $_POST['login'];
$emailform = $_POST['email'];

$buscasql = "SELECT * FROM membros WHERE login='$login'";
$querysql = mysql_query($buscasql);
$dados = mysql_fetch_array($querysql);

$emailsql = $dados["email"];
$senha = $dados["senha"];
$nome = $dados["nome"];

if ($emailform == $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 portal. Abaio seguem seus dados:";
$mensagem .= "<p>Login: ".$login."<br>";
$mensagem .= "Senha: ".$senha."</p>";

$smtp->Send("$emailform","driseven@yahoo.com.br","Recuperação de Senha","$mensagem"); //Os readers já estão configurados na classe smtp (smtp.class.php)

echo "Seus dados foram enviados com sucesso!";
}else{
echo "Os dados informados não são compatíveis com os cadastrados! Tente novamente!";
}
}else {
?>

<form action="<?php $PHP_SELF ?>" method="post" name="recupera">

<h1>Recuperação de Senha</h1>

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

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...