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

Redefinição de senha - não consigo enviar o e-mail


Edilson Santiago

Pergunta

Boa noite, amigos. Estou criando um sistema de login, com a funcionalidade de redefinir senha. 

Criei o formulário:

<?php
   require_once '../classes/usuarios.php';
?>
<html lang="pt-br">
    <head>
        <meta charset="utf-8">
        <title>SGI - PAINEL DE CONTROLE</title>
         <link type="text/css" rel="stylesheet" media="screen" href="estilos.css" />
         
         <script type="text/javascript" language="javascript">
            function valida_form(){
            if(document.getElementById("email").value == ""){
            alert('Por favor, digite o E-mail do usuário!');
            document.getElementById("email").focus();
            return false
            }
        }
</script>
         
    </head>
        <body>
        <div style="text-align:center"><h2><font color="#ffffff">ESQUECI MINHA SENHA...</h2></font><br><br></div>
                <div id="form">
                    <form method="POST" action="envia-nova-senha.php" onsubmit="return valida_form(this)">
                    <label>Informe seu e-mail:</label><input type="email" id="email" name="email" placeholder="E-mail" maxlength="520"><br>
                                        <input type="submit" name="postar" value="SOLICITAR"><br>
            </form>
            <?php 
            
            ?>
            </div>
        </body>
    </head>
    
    
</html>

o arquivo "envia-nova-senha.php:

<?php
session_start();
//require_once "../config.php";

if(isset($_POST['postar'])){
    if(empty(trim($_POST["email"]))){
    header("location: redefine_password_usu.php");
    }else{
        $email = trim($_POST["email"]);
                $dsn = ("mysql:host=localhost;dbname="meu banco";charset=utf8");
                $user = "meu usuario";
                $pass = "minha senha";
                $pdo = new PDO($dsn,$user,$pass);
                $sql = ("SELECT * FROM usuarios WHERE email='$email'");
                $stm = $pdo->prepare($sql);  
                $stm->execute();  
                $dados = $stm->fetchAll(PDO::FETCH_OBJ);  
                foreach($dados as $reg):  
                    $id = $reg->id . "";
                    $nome = $reg->nome . "";
                    $senha = $reg->senha . "";
                    $mail = $reg->email . "";
                    $chave = sha1($id.$senha);
                    endforeach; 
                    if($chave){
                        header("location: altera_senha.php?$chave");
                        $_SESSION['destinatario'] = $mail;
                        $_SESSION['nome'] = $nome;
                    }else{
                        echo '<script> alert ("E-mail não consta em nosso banco de dados. Por favor, entre em contato com o administrador do sistema."); location.href=("redefine_password_usu.php")</script>';
                        }
               
            }
        }
?>
            

e o arquivo "altera_senha.php":

<?php
session_start();
$chave = $_SERVER['QUERY_STRING'];
$value = $_SESSION['destinatario'];
$name = $_SESSION['nome'];

if (empty($chave)) {
    echo '<script> alert ("E-mail não consta em nosso banco de dados."); location.href=("redefine_password_usu.php")</script>';
} else {
  $nome = $name;
  $email = $value;
  $link_adress = 'http://meu_dominio/alterar_senha_usu.php?chave='.$chave.'';

    $to      = $value;
    $subject = 'Redefinição de Senha - SGI';
    $message = 'Olá. Esqueceu a sua senha? Tudo bem, acontece! Vamos te ajudar a redefinir. Clique no link '.$link_adress.' e redefina. Ah, uma coisinha importante: Para a sua segurança, este link só é válido por 2 horas. Após este tempo, você vai precisar fazer um novo pedido de redefinição, tudo bem?';
    $headers = array(
    'From' => 'webmaster@meu_dominio',
    'Reply-To' => 'webmaster@meu_dominio',     
    'X-Mailer' => 'PHP/' . phpversion()
);

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

}
?>

 

 

Só que não envia o e-mail. O que poderia estar errado ou faltando?

 

 

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Fiz o teste por aqui e a mensagem que recebi foi essa

Warning: mail(): Failed to connect to mailserver at &quot;localhost&quot; port 587, verify your &quot;SMTP&quot; and &quot;smtp_port&quot; setting in php.ini or use ini_set() in C:\wamp64\www\frank\astudy3.php on line 23

O número 587 apareceu porque alterei o seu código assim:

ini_set('smtp_port', 587);
mail($to, $subject, $message, $headers);

Com o que eu vi no Google, a porta mais comum é a 25. Mas acredito que você precisa de um programa que gerencia o email no desktop, tipo Outlook da Microsoft, e é através desse programa é que você define a porta para o PHP Mailer trabalhar.

Configuring SMTP Mail Settings - HostDime Knowledge Base

Espero ter ajudado.

 

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
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...