I have two simple functions that trigger email (Retrieve Password).
One works perfectly, the other does not make a mistake, but the email does not reach the recipient.
I would like a possible solution, thanks in advance!
Home
FUNCTION 1 (I forgot my password) - It randomly creates a new password, encrypts it and sends it 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 (DOES NOT WORK) - The system retrieves a coded 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 already tried the 5th Parameter ("-r $ email" or "-f $ email") and nothing!
-I'm using the code that the Uol Host itself suggests.