我想問如何更改登錄用戶的密碼, 當我輸入與數據庫中的任何人相匹配的密碼時,我可以更改密碼。 僅舉例,用戶有「admin」密碼,我只需輸入當前密碼, 新密碼並確認密碼。Codeigniter:更改登錄用戶的密碼和使用md5的密碼
當前密碼:admin 新密碼:newadmin 當前密碼:新的管理
同時,我不知道如何更改密碼,如果密碼 使用MD5()。我希望你能幫助我,我是Codeigniter的新手。 我搜索的答案,但我真的不明白它,所以我想評論,但 它需要50聲望,所以我發佈了新的問題。
這裏是我的代碼:
控制器
public function update(){
$this->form_validation->set_rules('password', 'Current Password', 'required|alpha_numeric|min_length[6]|max_length[20]');
$this->form_validation->set_rules('newpass', 'New Password', 'required|alpha_numeric|min_length[6]|max_length[20]');
$this->form_validation->set_rules('confpassword', 'Confirm Password', 'required|alpha_numeric|min_length[6]|max_length[20]');
if($this->form_validation->run()){
$cur_password = $this->input->post('password');
$new_password = $this->input->post('newpass');
$conf_password = $this->input->post('confpassword');
$this->load->model('queries');
$userid = '1';
$passwd = $this->queries->getCurrPassword($userid);
if($passwd->password == $cur_password){
if($new_password == $conf_password){
if($this->queries->updatePassword($new_password, $userid)){
echo 'Password updated successfully';
}
else{
echo 'Failed to update password';
}
}
else{
echo 'New password & Confirm password is not matching';
}
}
else{
echo'Sorry! Current password is not matching';
}
}
else{
echo validation_errors();
}
模式
public function getCurrPassword($userid){
$query = $this->db->where(['id'=>$userid])
->get('users');
if($query->num_rows() > 0){
return $query->row();
} }
public function updatePassword($new_password, $userid){
$data = array(
'password'=> $new_password
);
return $this->db->where('id', $userid)
->update('users', $data); }
是你的密碼數據存儲爲MD5在你的數據庫? – sintakonte
@sintakonte是的。 – squaredsquared
使用PHP使用'password_hash'和'password_verify'。討論:僅使用散列函數保存密碼驗證者是不夠的,僅僅添加鹽對提高安全性沒有多大作用。相反,用隨機鹽迭代HMAC約100ms持續時間,然後用散列表保存鹽。使用諸如PBKDF2,Rfc2898DeriveBytes,password_hash,Bcrypt,passlib.hash或類似函數的函數。關鍵是要讓攻擊者花費大量時間通過暴力破解密碼。 – zaph