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

无法使用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?

图片转代码服务由CSDN问答提供 功能建议

我正在尝试重定向到Codeigniter会话中存储电子邮件的用户的主页。 我使用 password_hash($ this-> input-> post('password'),PASSWORD_DEFAULT))来对密码进行哈希处理并且工作正常,但是当我尝试 password_verify时( )它,它失败了。

这是我的模型

 公共函数canLogin($ email,$ password){
 $ this-> db-&gt  ; where('email',$ email); 
 $ query = $ this-> db-> get($ this-> tableName); 
 $ row = $ query-> row(); \  n if($ row){
 return password_verify($ password,$ row-> password); 
} 
 else {
 return false; 
} 
} 
   
 
 

这是我的控制器

 公共函数loginValidation(){
 //在构造函数中加载的用户模型
 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('错误','无效的用户名或密码'); 
 //重定向('登录','刷新'); 
} 
} 
   \  n 
 

我不知道逻辑出了什么问题 它每次重定向到相同的登录页面,我试图验证它,在会话中存储电子邮件并将其重定向到 profile / personal ,任何人都可以指出我错过逻辑的地方吗?

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

相关推荐 更多相似问题