Php 验证电子邮件后codeigniter登录

Php 验证电子邮件后codeigniter登录,php,codeigniter,login,Php,Codeigniter,Login,我正在尝试确保用户在确认其电子邮件验证(数据库中的状态从0更改为1)后可以登录。如何根据数据库中状态的更改登录用户。提前谢谢 型号: public function login($username, $password){ //validation $this->db->where('username', $username); $this->db->where('password', $password); $result = $

我正在尝试确保用户在确认其电子邮件验证(数据库中的状态从0更改为1)后可以登录。如何根据数据库中状态的更改登录用户。提前谢谢

型号:

   public function login($username, $password){
    //validation
    $this->db->where('username', $username);
    $this->db->where('password', $password);

    $result = $this->db->get('users');
    if($result->num_rows() == 1){
        return $result->row(0)->id;

    } else {
        return FALSE;
    }
}
控制器:

   public function login(){
    $data['title'] = 'Login';

    $this->form_validation-> set_rules('username', 'Username', 'required');
    $this->form_validation-> set_rules('password', 'Password', 'required');

    if($this->form_validation->run() === FALSE){

    $this->load->view('templates/header');
    $this->load->view('users/login', $data);
    $this->load->view('templates/footer');
    } else {

        // fetching user
    $username = $this->input->post('username');
        //password
    $password = ($this->input->post('password'));

    //login user
    $user_id = $this->user_model->login($username, $password);

    if($user_id){
        //creating session
        $user_data = array(
            'user_id' => $user_id,
            'username' => $username,
            'logged_in' => TRUE,

        );
        $this->session->set_userdata($user_data);
                // Set message to be sent
    $this->session->set_flashdata('user_login', 'Welcome');
    redirect('posts');
    } else {
        // Set message to be sent
    $this->session->set_flashdata('login_fail', 'Login Failed');
    redirect('users/login'); 
    }

    }

}

您只需验证尝试登录的用户是否已验证我是否正确查询

为此,您只需在查询生成器中添加另一个where语句,同时检查用户名和密码。所以你的模型会像

public function login($username, $password){
    //validation
    $this->db->where('username', $username);
    $this->db->where('password', $password);
    $this->db->where('status', '1');

    $result = $this->db->get('users');
    if($result->num_rows() == 1){
        return $result->row(0)->id;

    } else {
        return FALSE;
    }
}

所以现在,即使用户提交了正确的登录详细信息,但尚未验证其帐户,他也将无法登录。

如果您的查询正确,您只需验证尝试登录的用户是否已被验证

为此,您只需在查询生成器中添加另一个where语句,同时检查用户名和密码。所以你的模型会像

public function login($username, $password){
    //validation
    $this->db->where('username', $username);
    $this->db->where('password', $password);
    $this->db->where('status', '1');

    $result = $this->db->get('users');
    if($result->num_rows() == 1){
        return $result->row(0)->id;

    } else {
        return FALSE;
    }
}

所以现在,即使用户提交了正确的登录详细信息,但尚未验证其帐户,他也将无法登录。

如果您询问如何检查用户是否已验证,则这应该是您的模型代码:

public function login($username, $password){

    $query = $this->db
            ->select('your_column')
            ->where(['user_email' => $user_name, 'user_password' => $user_password])
            ->where('user_verification_status','1')
            ->get('users');

            if ($query->num_rows() == 1) {
                $result = $query->row_array();
                return $result;
            } else {
                return FALSE;
            }

}
或者,如果要在注册后验证用户,则应遵循以下步骤:

当有人在您的系统中注册时,以及当您在注册表中保存该用户数据时,您应该使用输入的电子邮件并在用户电子邮件上发送验证链接。 在该验证链接中,当用户单击它时,它会出现在您的验证页面上,此时您应该更改用户的状态,并显示用户已验证的消息,现在您可以登录到系统。 作为答案中给出的模型代码,您应该检查用户是否已验证。
如果您需要有关用户验证的更多详细信息,请告诉我

如果您询问如何检查用户是否已验证,则这应该是您的型号代码:

public function login($username, $password){

    $query = $this->db
            ->select('your_column')
            ->where(['user_email' => $user_name, 'user_password' => $user_password])
            ->where('user_verification_status','1')
            ->get('users');

            if ($query->num_rows() == 1) {
                $result = $query->row_array();
                return $result;
            } else {
                return FALSE;
            }

}
或者,如果要在注册后验证用户,则应遵循以下步骤:

当有人在您的系统中注册时,以及当您在注册表中保存该用户数据时,您应该使用输入的电子邮件并在用户电子邮件上发送验证链接。 在该验证链接中,当用户单击它时,它会出现在您的验证页面上,此时您应该更改用户的状态,并显示用户已验证的消息,现在您可以登录到系统。 作为答案中给出的模型代码,您应该检查用户是否已验证。
如果您需要有关用户验证的更多详细信息,请告诉我

考虑到您已准备好验证系统,并且正在将db中的状态列从0更改为1。 使用下面的代码,您将能够根据该要求执行登录,在用户未被验证的情况下通知用户

返回的模型有正确的错误:

控制器使用从模型返回的数组


考虑到您已准备好验证系统,并且正在将数据库中的状态列从0更改为1。 使用下面的代码,您将能够根据该要求执行登录,在用户未被验证的情况下通知用户

返回的模型有正确的错误:

控制器使用从模型返回的数组


我不知道你是如何创建密码的,数据库中没有明文,然后使用回调函数进行验证。我知道我现在只关心登录。我肯定会把密码弄乱你的问题不清楚。你想做什么?你想检查用户是否在登录时验证,还是在注册后用户应该验证电子邮件,然后用户才能登录。我不确定你如何创建密码数据库中没有明文,然后使用回调函数进行验证我知道我现在只关心登录。我肯定会把密码弄乱你的问题不清楚。你想做什么?您是要检查用户在登录时是否已验证,还是在注册后用户应验证电子邮件,然后用户才能登录。