Подтвердите старый пароль перед сменой нового пароля - PullRequest
0 голосов
/ 25 ноября 2011

У меня есть панель с информацией о пользователях, которую они могут редактировать. Я хотел бы добавить изменение пароля, но прежде чем они смогут изменить свой пароль, как мне проверить свой текущий пароль, прежде чем разрешить им сменить пароль на новый?

Таким образом, форма будет иметь 3 поля. Первое поле будет иметь current_password, затем new_password и confirm_password.

Ответы [ 3 ]

1 голос
/ 25 ноября 2011

codeigniter поставляется с Классом проверки формы , документацию можно найти здесь . Его назначение в точности соответствует его названию - оно поможет вам проверить правильность ввода формы. Как только вы к этому привыкнете, это очень удобно.

Вот так может выглядеть ваш контроллер:

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

Это не идеальный пример для класса проверки формы. Просто потому, что вы можете легко проверить эти 3 поля без его помощи. Но так как он уже встроен в codeigniter, почему бы не использовать его?

0 голосов
/ 25 ноября 2011
$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
}

Надеюсь, это поможет

0 голосов
/ 25 ноября 2011

Попросите их ввести старый пароль, новый пароль и подтвердить новый пароль. Тогда,

if (old pass == password stored in database)
{
    if (new password == confirm password)
     {
          //update password in database
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...