忘记密码不发送邮件验证(Codeigniter)

时间:2021-02-18 04:06:59

标签: codeigniter

我有密码检索功能。但问题是,验证没有通过我的电子邮件或其他任何方式发送。我的目标是使用 gmail 身份验证重置我的密码。就像您如何在社交媒体上重置密码一样。我在下面提供了我的代码。任何帮助将不胜感激。非常感谢。

观看次数:

<h2>Reset</h2>
<div id="resest_password_form">
    <form action="/page/reset_password" method="POST">
        <div>
            <label for="email">Email:</label>
            <input type="email" value="<?php echo set_value('email');?>" name="email" />
        </div>
        <div>
            <input type="submit" name="submit" value="Reset" />
        </div>
    </form>
    <?php 
    echo validation_errors('<p class="error">');
    if(isset($error)){
        echo '<p class="error">'.$error.'</p>';
    }
    ?>  

</div>

控制器:

//reset_password email checker validation is working
      public function reset_password(){
          if(isset($_POST['email'])&& !empty($_POST['email'])){
                $this->load->library('form_validation');
                $this->form_validation->set_rules('email','Email_Address', 'trim|required|min_length[6]|max_length[50]|valid_email|xss_clean');
                
                if ($this->form_validation->run()==FALSE){
                   
                    $this->load->view('view_reset_password', array('error' => 'Please'));
                  
                }else {
                    $email = trim($this->input->post('email'));
                    $result = $this->pages->email_exists($email);
                    
                    if($result){
                        
                        $this->send_reset_password_email($email, $result);
                      
                        $this->load->view('vw_register', array('email' => $email));
                }else {
                      $this->load->view('page/view_reset_password', array('error' => 'Please else'));
                    }
                }
            } else {
                $this->load->view('page/view_reset_password');
            }
        }
        
        //sending email_verification is not working. I'm not receiving any reset link to my gmail.
        private  function send_reset_password_email($email, $firstname) {
            


$config = Array(
            'protocol' => 'smtp',
            'smtp_host' => 'ssl://smtp.googlemail.com',
            'smtp_port' => 465,
            'smtp_user' => 'd****@gmail.com',
            'smtp_pass' => 'd*****',
            'mailtype'  => 'html',
            'charset'   => 'iso-8859-1'
        );
        $this->load->library('email', $config);
        $this->email->set_newline("\r\n"); 

           


            $this->load->library('email');
            $email_code = md5($this->config->item('salt') . $firstname);
            
            $this->email->set_mailtype('html');
            $this->email->from($this->config->item('bot_email'), 'Freight Forum');
            $this->email->to($email);
            $this->email->subject('Please');
            
            
            $message = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html>
                        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                        </head><body>';
            
            $message .= '<p> Dear' . $firstname .',</p>';
            
            $message .= '<p>WE<strong><a href="' . base_url(). 'page/reset_password_form'.$email .'/'.$email_code .'">click here</a></strong> to reset</p>';
            $message .= '<p>Thanks</p>';
            $message .= '<p>The Team</p>';
            $message .= '</body></html>';
            
            $this->email->message($message);
            $this->email->send();
            
    }

型号:

//working
    public function email_exists($email){
            $sql = "SELECT firstname, email FROM users WHERE email = '{$email}' LIMIT 1";
            $result = $this->db->query($sql);
            $row = $result->row();
            
            return ($result->num_rows() === 1 && $row->email) ? $row->firstname : false;
        }

0 个答案:

没有答案