Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Relentless

PHP recuperar senha em .php

Recommended Posts

Postado (editado)

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>

 

Editado por DiF
O código deve ser postado usando o botão CODE <>. A citação é só para textos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×