我有一个可以编辑用户详细信息的信息中心。我想添加一个密码更改,但在他们更改密码之前,如何在让他们更改为新密码之前验证他们当前的密码?
因此表单将有3个字段。第一个字段将包含current_password
,后跟new_password
和confirm_password
。
答案 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 }
希望有所帮助