2017-07-27 115 views
-1

有沒有解決方案如何爲登錄用戶更改密碼?我想爲登錄用戶創建一個更改密碼,我只修改了用戶密碼,其中用戶ID號爲1.它不會爲登錄用戶更改。所以有什麼想法?如何更改登錄用戶的密碼

這是我的控制器:

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); } 
+1

這是什麼框架?看起來像一個可怕的編程只是簡單地更改密碼很多。 –

+0

那麼,那是因爲你有$ userid ='1';在你的if塊中。 – Vagabond

+0

codeigniter @EdwardB。 –

回答

0

當有人登錄時,必須設置一個$_SESSION存儲您的用戶信息,如用戶名,ID,電子郵件,......在需要時使用。然後你可以檢查$_SESSION['session_name']['id']來更改用戶密碼。 $_SESSION很重要,用戶登錄時必須設置。