codeigniter 邮箱验证

codeigniter email verification

大家好,我正在尝试向注册用户发送电子邮件验证短信。消息正在发送并且确认有效,但数据库中的 'status' 行在单击身份验证后不会更新为 1。

这是我的代码 CONTROLLER

    public function verify($email_code, $email_address) {
    if($this->user_model->verifyEmail($email_code, $email_address)){
    $this->load->view('templates/header');
    $this->load->view('users/email_validated');
    $this->load->view('templates/footer'); 
    } else {
        echo 'error'.$this->config->item('admin_email');    
    }

}

这是我的代码模型

public function send_validation_email() {
    $username = $this->input->post('username');
    $email = $this->input->post('email');

    $sql = "SELECT id, register_date FROM users WHERE email = '" .$email ."' LIMIT 1";
    $result = $this->db->query($sql);
    $row = $result->row();

    $this->email_code = md5((string)$row->register_date);
    $email_code = $this->email_code;

    $this->email->set_mailtype('html');
    $this->email->from($this->config->item('bot_email'),'talkativs');
    $this->email->to('xxxxx@gmail.com');
    $this->email->subject('activatorrrrr');

    $message .= '<p> Dear ' . $username.',</p>';

    $message .= '<p> confim mail sharpaly <a href="' . base_url().'users/verify/'.$email.'/'.$email_code.'">click here</a></p>';
    $message .= '<p> Thanks</p>';

    $this->email->message($message);
    $this->email->send();

    if ($this->email->send()){
        return "sent";
    } else {
        return "failed to send";    
    }

}


 function verifyEmail($email_code, $email_address) {
    $data = array('status' => 1);
    $this->db->where('email', $email_address);
    $this->db->where('md5(register_date)', $email_code);
    return $this->db->update('users', $data);
}

您的方法参数映射错误..

public function verify($email_code, $email_address) {
        if($this->user_model->verifyEmail($email_code, $email_address)){
        $this->load->view('templates/header');
        $this->load->view('users/email_validated');
        $this->load->view('templates/footer'); 
        } else {
            echo 'error'.$this->config->item('admin_email');    
        }
    }

一定是这样的:

public function verify($email_address, $email_code) {
    if($this->user_model->verifyEmail($email_code, $email_address)){
    $this->load->view('templates/header');
    $this->load->view('users/email_validated');
    $this->load->view('templates/footer'); 
    } else {
        echo 'error'.$this->config->item('admin_email');    
    }
}

您发送的电子邮件如下例所示:

'<p> confirm mail sharply <a href="' . base_url().'users/verify/'.$email.'/'.$email_code.'">click here</a></p>';

在电子邮件中产生以下输出:

<p>confirm mail sharply <a href="http:// www.site.com/users/verify/example@email.com/AC67">click here</a></p>

注意link的格式:

users{Controller}/verify{Method}/example@email.com{First Param}/AC67{Second Param}

所以你的方法一定是使用方法($email, $code)。 .. 简单.. :)

因为 CodeIgniter 采用 url 参数的顺序与它们提供的顺序相同..