0

我创建了一个更改密码门户,它一直回显“旧密码不匹配!”,但我确定我的旧密码与数据库的密码相同,我的控制器或模型有什么问题吗?希望有人能帮忙,谢谢!

下面是我的控制器:

public function chgpass()
{
    $this->load->helper('security');
    $this->form_validation->set_rules('cpassword','Current Password','required|max_length[150]|min_length[6]');
    $this->form_validation->set_rules('npassword','New Password','required|max_length[150]|min_length[6]');
    $this->form_validation->set_rules('copassword','Confirm Password','required|max_length[150]|min_length[6]|matches[npassword]');

    if($this->form_validation->run() == false){
        $this->load->view('chgpass');
    }else{
        //update data
        $data = array(
            'password' => md5($this->input->post('npassword'))
        );
        //check old password
        $result = $this->Form_model->Check_Old_Password($this->session->userdata('USER_ID'),md5($this->input->post('cpassword')));
        if($result > 0 AND $result === true){
            //update user data
            $result = $this->Form_model->Update_User_Data($this->session->userdata('USER_ID'),$data);
            if($result > 0){
                echo "Password Changed!";
                //$this->session->set_flashdata('success','Password Changed!');
                //redirect(base_url() . 'main/login');
            }else{
                echo "Password Not Changed!";
                //$this->session->set_flashdata('error','Password Not Changed!');
                //redirect(base_url() . 'main/chgpass');
            }
        }else{
            echo "Old Password Not Match!";
            //$this->session->set_flashdata('error','Password Not Changed!');
            //redirect(base_url() . 'main/chgpass');
        }
    }
}

下面是我的模型:

public function Update_User_Data($user_id,$data){
    $this->db->set($data);
    $this->db->where('id',$user_id);
    $this->db->update('users');
    if($this->db->affected_rows() > 0)
        return true;
    else
        return false;

}
public function Check_Old_Password($user_id,$cpassword){
    $this->db->where('id',$user_id);
    $this->db->where('password',$cpassword);
    $query = $this->db->get('users');
    if($query->num_rows() > 0)
        return true;
    else
        return false;

}
4

1 回答 1

0

我得到了解决方案,只需将 USER_ID 和 $user_id 更改为用户名和 $username

模型:

public function Update_User_Data($username,$data){
    $this->db->set($data);
    $this->db->where('username',$username);
    $this->db->update('users');
    if($this->db->affected_rows() > 0)
        return true;
    else
        return false;

}
public function Check_Old_Password($username,$cpassword){
    $this->db->where('username',$username);
    $this->db->where('password',$cpassword);
    $query = $this->db->get('users');
    if($query->num_rows() > 0)
        return true;
    else
        return false;

}

控制器:

$result = $this->Form_model->Check_Old_Password($this->session->userdata('username'),md5($this->input->post('cpassword')));
                if($result > 0 AND $result === true){
                    //update user data
                    $result = $this->Form_model->Update_User_Data($this->session->userdata('username'),$data);
于 2018-10-05T01:04:14.710 回答