我有一個儀表板,其中包含可以編輯的用戶詳細信息。我想添加一個密碼更改,但他們可以更改密碼之前,我將如何驗證其當前的密碼,然後讓他們更改爲一個新的密碼?在更改爲新密碼之前確認舊密碼codeigniter
所以窗體將有3個字段。第一場將有current_password
,其後跟new_password
和confirm_password
。
我有一個儀表板,其中包含可以編輯的用戶詳細信息。我想添加一個密碼更改,但他們可以更改密碼之前,我將如何驗證其當前的密碼,然後讓他們更改爲一個新的密碼?在更改爲新密碼之前確認舊密碼codeigniter
所以窗體將有3個字段。第一場將有current_password
,其後跟new_password
和confirm_password
。
笨配備了表單驗證類你可以找到documentation here。 它的目的正是它的名字 - 它會幫助你驗證你的表單輸入。一旦你習慣了它,它真的很方便。
這是怎麼控制器可以看看:
public function change_password() {
if ($this->input->post()) {
// user submitted the form
if (some_encryption_function($this->input->post('current_password'))==password_from_db) { // pseudo code
$this->load->library('form_validation'); // this should probably belong somewhere else like in the constructor of the controller
$this->form_validation->set_rules('new_password', 'New Password', 'trim|required|min_length[4]|max_length[12]|matches[confirm_password]');
$this->form_validation->set_rules('confirm_password', 'Confirm Password', 'trim|required|min_length[4]|max_length[12]');
if ($this->form_validation->run() == false) {
data['message'] = validation_errors();
} else {
store_new_password_to_db($this->input->post('new_password');
data['message'] = "Some success message";
}
$this->load->view('your_change_password_view',$data);
}
}
}
這不是表單驗證類一個很好的例子。僅僅因爲你可以在沒有幫助的情況下輕鬆驗證這三個域。但是,它已經與codeigniter建立在一起,爲什麼不使用它?
讓他們輸入舊密碼,新密碼並確認新密碼。然後,
if (old pass == password stored in database)
{
if (new password == confirm password)
{
//update password in database
}
}
$oldPass = get_password_from_db(); $currentPass = $this->input->post("old_pass"); $newPass = $this->input->post("new_pass"); $confPass = $this->input->post("conf_pass"); //check if new and confirm pass are same if(md5($currentPass) == $oldPass) { //update query to change to new pass }
希望它可以幫助
謝謝你的幫助。它正指向我正確的方向! – Wolfwood