我的验证有问题。我正在使用Codeigniter的原生表格验证。
我正在进行用户更新功能但是,我无法验证oldpassword
。每当我键入oldpassword
的正确值时,它都无法提交。但是当我输入错误时,它就变得很好了。
嗯,这是控制器的一部分
$this->form_validation->set_rules('oldpassword', 'Old Password', 'required|callback_password_check');
$this->form_validation->set_rules('password', 'New Password', 'required|matches[confirmpassword]');
$this->form_validation->set_rules('confirmpassword', 'New Password Confirmation', 'required');
这是密码检查功能
function password_check($str){
$result = $this->create_model->check_password($str);
if($result)
{
$this->form_validation->set_message('password_check', 'Password does not match!');
return false;
}
else{
return true;
}
}
这是检查器的模型
function check_password($str){
$this->db->select('*');
$this->db->from('users');
$this->db->where('id', $this->input->post('id'));
$this->db->limit(1);
$query = $this->db-> get();
if($query->num_rows() == 1) {
//GETS PASSWORD FOR HASHING
foreach($query->result() as $rows) {
$hash = $rows->password;
}
//VERIFY PASSWORD
if (password_verify($str, $hash)) {
$this->session->set_flashdata('success', 'Success! You have changed the password'); //DONT MIND THIS, ITS A TEST
return true;
} else {
$this->session->set_flashdata('error', 'Old Password is incorrect'); //DONT MIND THIS, ITS A TEST
return false;
}
} else {
return false;
}
}
答案 0 :(得分:1)
function password_check($str)
中您的条件不正确。取代
if($result)
到
if(!$result)