我正在尝试使用活动记录更改密码代码。这很好,但我需要知道密码是否已成功更改或当前密码实际上是错误的。
我正在使用受影响的行来查看有多少记录受到影响。该值应该是 1 或 0,1 表示密码已成功更改,0 表示未更改(即输入的当前密码错误)。受影响的行永远不会返回超过 1,因为用户名是唯一的。所以它应该按照我接近它的方式工作。但它似乎不起作用,因为受影响的行函数总是返回 1。
这是代码 控制器:
function changepass() {
$this->form_validation->set_rules('pass', 'Password', 'required|matches[passconf]|min_length[6]|max_length[12]');
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
if ($this->form_validation->run() == false) {
//if not valid
$this->session->set_flashdata('message', validation_errors());
redirect('profile');
} else {
//if valid
$current = $this->input->post('current');
$change = $this->input->post('pass');
$id = $this->input->post('id');
$flag = $this->profile_model->update_pass($current, $change, $id);
if ($flag = true) {// If Successful
$this->session->set_flashdata('message', $flag);
} else { // If Unsuccessful
$this->session->set_flashdata('message', 'Current Password is not valid');
}
redirect('profile');
}
}
模型:
function update_pass($current,$change,$id) {
$data = array('pass'=>$change);
$this->db->where('id',$id);
$this->db->where('pass',$current);
$this->db->update('users',$data);
return ($this->db->affected_rows());
}