Ir ao conteúdo

Posts recomendados

Postado

Boa noite, eu estou criando uma pagina web e estou com problemas para fazer o "esqueci minha senha", o codigo é esse aqui mas ele da erro quando tento executar.

<?php
    
    include("db.php");

    if(isset($_POST[ok])){  <-- aqui da erro

        $email = $mysqli->escape_string($_POST['email']);

        if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
            $erro[] = "E-mail inválido.";
        }

        $sql_code = "SELECT senha,id FROM usuarios WHERE email = '$_SESSION'";
        $sql_query = $mysqli->query($sql_code) or die($mysqli->error);
        $dado = $sql_query->fetch_assoc();
        $total = $sql_query->num_rows;

        if($total == 0){
            $erro[] = "O email informado não existe no banco de dados.";
        }

        if(count($erro) == 0 && total > 0){


        $novasenha = substrmd5(time(),0,6);
        $nscriptografada = md5(md5($novasenha));
        

        if(mail($email,"Sua nova senha","Sua nova senha:".$novasenha)){

        $sql_code = "UPDATE usuarios SET senha = '$nscriptografada' WHERE email = '$email'";
        $sql_query = $mysqli->query($sql_code) or die($mysqli->error);

            if($sql_query)
                $erro[] = "Senha Alterada com Sucesso!";

            }
        }
    }

?>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    <?php if(count($erro) > 0)
        foreach($erro as $msg){ <-- aqui da erro
            echo "<p>$msg</p>";        
        }
    ?>
        <form method="POST" action="">
        <input value="<?php echo $_POST['email']; ?>" placeholder="Seu e-mail" name="email" type="text">
        <input name="ok" value="ok" type="submit">
</form>
</body>

 

  • Moderador
Postado

@Relentless Olá,  Qual o erro exatamente que você esta tendo?

 

Tem alguns pontos que quero ressaltar. 

Você faz uma consulta usando a sessão, mas não abriu ela no inicio do código php.

O update na tabela está sendo feito baseado no e-mail. ( ele é sua chave primária?) 

 

O ideal é que você modele seu banco de dados para que ele aja em torno no ID auto increment que o usuário recebe ao fazer o registro.

 

Evite de usar a função mail(), o phpmailer é muito melhor para envio de e-mails.

 

No seu form, o action está vazio. Por padrão da w3c e questões de segurança use:

action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"

Embora, recomende sempre que use um arquivo php separado para receber os dados de um formulário.

Isso permite que use o ajax no javascript

Postado

A chave primaria do meu banco é o ID, coloquei o  session_start(); no começo do codigo mas não funcionou também, como sou novato, peguei esse php de uma video aula. o erro que dá está anexado. 

Me ajude por favor

 

 

WhatsApp Image 2018-05-26 at 18.33.28.jpeg

adicionado 4 minutos depois

@DiF Como você me indicaria fazer esse codigo?

Postado

mas a session foi criada corretamente?

 

tipo:

<?php

session_start();

$_SESSION["nome"] = "nome_do_usuario";

?>

nas páginas seguintes ou na página que vai conter outras páginas(caso vá usar include), voce também DEVE iniciar a sessão session_start();

Para saber se a sessão está funcionado usa esse código para obter o nome do usuario logado em : nome_do_usuario

echo "Sessão atual: ". $_SESSION["nome"];

o resultado será exibir o nome que voce colocar em nome_do_usuario

 

Outra forma de ver se deu certo a sessão, é verificar se voce obteve um numero de sessão:

echo "valor da sessão: ".session_id();

o resultado seria algo como isso : valor da sessão: m8geqh7b0q1g0kdrkte0

 

  • Moderador
Postado

@Relentless Então, não sei como está modelado o seu banco de dados.

Mas não é difícil.

 

Eu faria da seguinte forma:

 

O formulário:

<form action="processaDados.php" method="post">
    <input type="text" name="email" />
     <input type="submit" value="Gerar nova senha" />
</form> 

Note que  action emite os dados formulário para outro arquivo php.

Neste  você armazena o valor do campo emitido na variável.,  instancia a classe phpmailer e envia o e-mail com uma nova senha gerada aleatoriamente. 

 

O erro na imagem que postou, indica que a variável email não possui valor.

 

PS: para ter uma experiência mais legal, recomendo implementar esta geração de senha via e-mail com ajax.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!