如何使忘记密码在codeigniter,密码发送电子邮件

42fyovps  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(440)

你好,伙计,我在codeigniter中创建了一个小的应用程序,在这个应用程序中我正在做忘记密码模块,我创建了一个函数,但不知道为什么它不工作,我需要随机密码已经在邮件中发送将自动生成,但电子邮件的方法不工作,所以给我一些建议。
以下是我的观点:

<form action="<?php echo base_url() . "welcome/forgotpassword" ?>" method="POST">

            <div class="form-group has-feedback">
                    <input type="email" class="form-control" placeholder="Email" name="user_email" />
                    <span class="glyphicon glyphicon-envelope form-control-feedback"></span>
             </div>
              <div class="row">
              <div class="col-xs-4">
                     <input type="submit"  class="btn btn-primary btn-block btn-flat"  value="Send">

              </div>
             </div>
    </form>

这是我的控制器:

public function forgotpassword(){

    $email = $this->input->post('user_email');
    $findemail = $this->main_model->ForgotPassword($email);
    $this->load->view('forgotpassword');
    if ($findemail) {
        $this->main_model->sendpassword($findemail);
    } else {

          $this->session->set_flashdata('msg', 'Email not found!');

    }
}

这是我的模型:

public function sendpassword($data) {
    $email = $data['user_email'];
    print_r($data);
    $query1 = $this->db->query("SELECT *  from user_registration where user_email = '" . $email . "'");
    $row = $query1->result_array();

    if ($query1->num_rows() > 0) {

        $passwordplain = "";
        $passwordplain = rand(999999999, 9999999999);
        $newpass['user_password'] = md5($passwordplain);
        $this->db->where('user_email', $email);
        $this->db->update('user_registration', $newpass);
        $mail_message = 'Dear ' . $row[0]['full_name'] . ',' . "\r\n";
        $mail_message .= 'Thanks for contacting regarding to forgot password,<br> Your <b>Password</b> is <b>' . $passwordplain . '</b>' . "\r\n";
        $mail_message .= '<br>Please Update your password.';
        $mail_message .= '<br>Thanks & Regards';
        $mail_message .= '<br>Your company name';
        require FCPATH . 'assets/PHPMailer/PHPMailerAutoload.php';
        $mail = new PHPMailer;
        $mail->isSMTP();
        $mail->SMTPSecure = "tls";
        $mail->Debugoutput = 'html';
        $mail->Host = "ssl://smtp.googlemail.com";
        $mail->Port = 465;
        $mail->SMTPAuth = true;
        $mail->Username = "xxxxxxxxx@gmail.com";
        $mail->Password = "xxxxxxxx";
        $mail->setFrom('xxxxxxx@gmail.com', 'admin');
        $mail->IsHTML(true);
        $mail->addAddress('user_email', $email);
        $mail->Subject = 'OTP from company';
        $mail->Body = $mail_message;
        $mail->AltBody = $mail_message;

        if (!$mail->send()) {

            $this->session->set_flashdata('msg', 'Failed to send password, please try again!');
        } else {

            echo $this->email->print_debugger();
            $this->session->set_flashdata('msg', 'Password sent to your email!');
        }

    }
}
1yjd4xko

1yjd4xko1#

这个函数可能和它有关。。。你能给我们看看吗?

$findemail = $this->main_model->ForgotPassword($email);

当你使用 print_r($data) 有什么退货吗?如果没有, $query1 将为0或null,所有内容都将中断。

// core function
public function sendpassword($data) {
    // include your libary at the top
    require FCPATH . 'assets/PHPMailer/PHPMailerAutoload.php';
    // email retrieved from the ForgotPassword() method.
    $email = $data['user_email'];
    // get the user_info array row
    $query1 = $this->db->query("SELECT * from user_registration where user_email = '" . $email . "'");
    $row = $query1->result_array();
    if ($query1->num_rows() > 0) {
        // assign users name to a variable
        $full_name = $row['full_name'];
        // generate password from a random integer
        $passwordplain = rand(999999999, 9999999999);
        // encrypt password
        $encrypted_pass = $this->pass_gen($passwordplain);
        $newpass['user_password'] = $encrypted_pass;
        // update password in db
        $this->db->where('user_email', $email);
        $this->db->update('user_registration', $newpass);
    // begin email functions
    $result = $this->email_user($full_name, $email, $passwordplain);
    echo $result;
    }
}

// email sending
public function email_user($full_name, $email, $passwordplain) {
    // compose message
    $mail_message = 'Dear ' . $full_name. ',' . "\r\n";
    $mail_message .= 'Thanks for contacting regarding to forgot password,<br> Your <b>Password</b> is <b>' . $passwordplain . '</b>' . "\r\n";
    $mail_message .= '<br>Please Update your password.';
    $mail_message .= '<br>Thanks & Regards';
    $mail_message .= '<br>Your company name';
    // email config
    $mail = new PHPMailer;
    $mail->isSMTP();
    $mail->SMTPSecure = "tls";
    $mail->Debugoutput = 'html';
    $mail->Host = "ssl://smtp.googlemail.com";
    $mail->Port = 465;
    $mail->SMTPAuth = true;
    $mail->Username = "xxxxxxxxx@gmail.com";
    $mail->Password = "xxxxxxxx";
    $mail->setFrom('xxxxxxx@gmail.com', 'admin');
    $mail->IsHTML(true);
    $mail->addAddress('user_email', $email);
    $mail->Subject = 'OTP from company';
    $mail->Body = $mail_message;
    $mail->AltBody = $mail_message;
    // send the mail
    if (!$mail->send()) {
        return $this->email->print_debugger();
        $this->session->set_flashdata('msg', 'Failed to send password, please try again!');
    } else {
        return $this->email->print_debugger();
        $this->session->set_flashdata('msg', 'Password sent to your email!');
    }
}

// Password encryption
public function pass_gen($password) {
    $encrypted_pass = md5($password);
    return $encrypted_pass;
}
jogvjijk

jogvjijk2#

$query1=$this->db->query(“从user\u registration中选择*,其中user\u email='”$电子邮件“'”;它有sql注入!

相关问题