我正在使用codeigniter php框架。我遇到的问题是所有用户的密码有时会自动在数据库中获得更改,请帮忙。
这是我的重置代码
function reset_now($key){
//key of fourth segment is saved on cookie
$key = $this->uri->segment(4);
//start validation
$this->form_validation->set_rules('password','Password','xss_clean|required|alpha_numeric|min_length[6]|max_length[20]|matches[password_conf]|sha1');
$this->form_validation->set_rules('password_conf','Password Confirmation','xss_clean|required|alpha_numeric|matches[password]|sha1');
if($this->form_validation->run() == FALSE){
$this->load->view('account/reset_password');
}else{
$this->db->set('password', $this->_salt.$this->input->post('password'));
$this->db->where('lostkey', $_POST['lostkey']);
$this->db->update('users');
$this->session->set_flashdata('message','Password changed, please login with new password');
redirect('account/login');
//$this->load->view('account/reset_password_complete');
}
}
答案 0 :(得分:4)
您可能忘记了密码更新sql中的条件。请重新检查你的sql。密码不会自动更改。当有人试图更改密码时,可能会触发它。
根据提供的代码更新
您的更新条件是,
$this->db->where('lostkey', $_POST['lostkey']);
where
子句应该使用用户id(数据库中用户的主键)而不是lostkey
(我不是这意味着,可能有多个行具有相同的{ {1}})。
因此,您的lostkey
子句必须类似于
where
。