在更改为新密码codeigniter之前确认旧密码

时间:2011-11-25 05:27:21

标签: php codeigniter

我有一个可以编辑用户详细信息的信息中心。我想添加一个密码更改,但在他们更改密码之前,如何在让他们更改为新密码之前验证他们当前的密码?

因此表单将有3个字段。第一个字段将包含current_password,后跟new_passwordconfirm_password

3 个答案:

答案 0 :(得分:1)

codeigniter附带表单验证类,您可以找到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为什么不使用它?

答案 1 :(得分:0)

让他们输入旧密码,新密码并确认新密码。然后,

if (old pass == password stored in database)
{
    if (new password == confirm password)
     {
          //update password in database
     }
}

答案 2 :(得分:0)

$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
}

希望有所帮助