0
I have two simple functions that trigger e-mail (Recover Password).
One works perfectly, the other does not accuse error, but the email does not reach the recipient.
I would like a possible solution, I thank you all in advance!
FUNCTION 1 (I forgot the password) - It creates a new password randomly, encrypts and sends to the user’s email.
public function check_userlogin () {
if(isset($_POST['ResultadoConta'])
&& ( $_POST['ResultadoConta'] != null)
){
$email = $_POST['RecuperarEmail'];
$resposta = $_POST['ResultadoConta'];
if( $_POST['ResultadoConta'] == 0){
//consulta na BD se o email existe
$query = $this->db->query(
'SELECT * FROM usu_usuarios WHERE usu_email = ? LIMIT 1',
array ($email)
);
// Obtém os dados da base de usuário
$fetch = $query->fetch(PDO::FETCH_ASSOC);
// Obtém o ID do usuário
$user_id = (int) $fetch['usu_id'];
$user_status = (int) $fetch['usu_status'];
// Se os dados estiverem nulos e o email não existir exibir a mensagem
if ( empty( $user_id ) || $user_status == 0 ) {
$this->login_error = 'Usuário Não Encontrado.';
return;
}else{
//se existir o sistema atualiza a senha (randomicamente) na BD, dispara email com nova senha
$aleatorio = rand(6, 6); // 6 CARACTERES
$valor = substr(str_shuffle("AaBbCcDdEeFfGgHhIiJjKkLlMmNnPpQqRrSsTtUuVvYyXxWwZz0123456789@#$%&"), 0, $aleatorio);
$password_hash = new PasswordHash(8, FALSE);
// Cria o hash da senha
$password = $password_hash->HashPassword($valor);
//update na base de dados
$query = $this->db->query(
'UPDATE usu_usuarios SET usu_senha=? WHERE usu_id=?;',
array ($password,$user_id)
);
//disparando email
$from = "[email protected]";
$to = $email;
$subject = "SD Vale - Nova Senha ";
$message = "<p><b>RECUPERAÇÃO DE SENHA</b> <br /><br /><b>Nova senha:</b> ".$valor."</p>";
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .= "De:". $from;
mail($to, $subject, $message, $headers);
$this->form_msg = 'A solicitação para recuperar a senha foi enviada. Não esqueça de olhar a caixa de LIXO ELETRÔNICO ou SPAM S.';
return;
}
}else{
$this->login_error = 'Resposta Incorreta, tente novamente!';
}
}
}
FUNCTION 2 (NOT WORKING) - The system retrieves an encrypted password, decodes and sends an email with the registered password.
public function Recuperar_Senha() {
//recuperar senha
if(isset($_POST['RecuperarResultado'])
&& ( $_POST['RecuperarResultado'] != null)
){
$email = $_POST['RecuperarEmail'];
$resposta = $_POST['RecuperarResultado'];
if( $_POST['RecuperarResultado'] == 0){
//consulta na BD se o email existe
$query = $this->db->query(
'SELECT * FROM usu_usuarios WHERE usu_email = ? LIMIT 1',
array ($email)
);
// Obtém os dados da base de usuário
$fetch = $query->fetch(PDO::FETCH_ASSOC);
// Obtém o ID do usuário
$user_id = (int) $fetch['usu_id'];
$user_status = (int) $fetch['usu_status'];
$user_pass = base64_decode($fetch['usu_senha']);
// Se os dados estiverem nulos e o email não existir exibir a mensagem
if ( empty( $user_id ) || $user_status == 0 ) {
$this->login_error = 'Usuário não Encontrado.';
return;
}else{
//disparando email
$from = "[email protected]";
$to = $email;
$subject = "SD Vale - Recuperar Senha ";
$message = "<p><b>RECUPERAÇÃO DE SENHA</b> <br /><br /><b>A sua senha é: </b> ".$user_pass."</p>";
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .= "De:". $from;
mail($to, $subject, $message, $headers);
$this->form_msg = 'A solicitação para recuperar a senha foi enviada. Não esqueça de olhar a caixa de LIXO ELETRÔNICO ou SPAM S.';
return;
}
}else{
$this->login_error = 'Resposta Incorreta, tente novamente!';
}
}
}
Additional Information:
-I tried the 5th Parameter ("-r$email" or "-f$email") and nothing!
-I’m using the code that Uol Host itself suggests.
My experience with UOL is traumatic, it does not go to theirs. I suggest using a library like the Phpmailer
– Costamilam
I’ll use it, see if I can reverse the situation!
– Júlio Martins
https://stackoverflow.com/questions/3186725/how-can-i-get-the-error-message-for-the-mail-function
– Don't Panic
who works and who doesn’t work?
– user60252
Hello Leo, it’s the second function!
– Júlio Martins