dongzhi2332 2019-01-10 21:17
浏览 742
已采纳

无法使用password_verify验证密码

I'm trying to achieve a redirect to the home page of the user storing email in the session in Codeigniter. I have used password_hash($this->input->post('password'), PASSWORD_DEFAULT)) to hash the passwords and it works fine, but when I try to password_verify() it, it fails.

Here is my Model

public function canLogin($email, $password) {
    $this->db->where('email',$email);
    $query  =   $this->db->get($this->tableName);
    $row    =   $query->row();
    if ($row) {
        return password_verify($password, $row->password);
    }
    else {
        return false;
    }
}

and here is my Controller

public function loginValidation() {
    // User Model Loaded in constructor
    if ($this->user->canLogin($_POST['email'], $_POST['password'])) {
        $session_data   =   array('email' => $_POST['email'] );
        $this->session->set_userdata($session_data);
        redirect('profile/personal','Refresh');

    } else {
        echo 'fail';
        $this->session->set_flashdata('error', 'Invalid Username or Password');
        // redirect('login','Refresh');
    }
}

I don't know where the logic went wrong and it everytime redirects to the same login page, I am trying to authenticate it, store email in session and redirect it to profile/personal , Can anyone point where I missed the logic?

  • 写回答

2条回答 默认 最新

  • doumeng1089 2019-01-10 21:51
    关注

    @YashKaranke what is the password column's length? – Funk Forty Niner
    @FunkFortyNiner It is 50 with datatype varchar – Yash Karanke

    The password column's length is too short, it should be 60 or 255 as the manual on PHP.net for password_hash() suggests.

    You now have to start over with new hashes.

    The verification failed silently.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?