在codeigniter中重置密码

时间:2015-11-28 13:42:33

标签: codeigniter passwords reset

我是codeigniter的新手,我正在尝试创建一个密码重置系统 这是我的控制器:

    public function changePassword(){
    if($this->session->userdata('loginuser'))
   {
     $session_data = $this->session->userdata('loginuser');

     $email = $this->session->userdata('email');

     $data['email'] = $email;

     $data['title'] = 'Change my Password | Watch Stop';

     $this->load->view('template/header', $data);
     $this->load->view('watch_stop/vpassword', $data);
     $this->load->view('template/footer');


     }
    else
   {
     //If no session, redirect to login page
     redirect('login', 'refresh');
   }
}

public function reset_password(){
    if($this->session->userdata('loginuser'))
   {
     $session_data = $this->session->userdata('loginuser');

     $email = $this->session->userdata('email');

     $data['email'] = $email;


    //validating form
    $this->form_validation->set_rules('old_password','Old Password','trim|required|min_length[5]|md5');
    $this->form_validation->set_rules('new_password','New Password','trim|required|min_length[5]|matches[cnew_password]|md5');
    $this->form_validation->set_rules('cnew_password','Confirm Password','trim|required||md5');

    if ($this->form_validation->run() == FALSE)
    {
        $this->changePassword();
        //$this->session->set_flashdata('msg','<div class="alert alert-danger text-center">Failed to update password</div>');

    }else {

        $query=$this->customer_model->change_password();


            $data = array( "main_content" => 'includes/memberadmin/memberadmin_cpass_process',
            "query" => $query
            );
            $this->load->view('includes/memberadmin/template',$data);


    }



     }
    else
   {
     //If no session, redirect to login page
     redirect('login', 'refresh');
   }
}

这是我的模特: function change_password(){

     $this->db->select('id');
    $this->db->where('email',$this->session->userdata('email'));
    $this->db->where('password',$this->input->post('old_password'));
    $query=$this->db->get('user');   

    if ($query->num_rows() > 0)
     {
            $row = $query->row();
            if($row->email===$this->session->userdata('email'))
            {
                $data = array(
                  'new_password' => $this->input->post('new_password')
                 );
              $this->db->where('email',$this->session->userdata('email'));
              $this->db->where('new_password',$this->input->post('old_password'));
                   if($this->db->update('user', $data)) 
                   {
                   return "Password Changed Successfully";
                   }else{
                    return "Something Went Wrong, Password Not Changed";
                   }
            }else{
            return "Something Went Wrong, Password Not Changed";
            }


     }else{
        return "Wrong Old Password";
     }
 }

当我点击我的重置密码页面中的更新按钮时,我的新密码确认字段出现以下错误:无法访问与您的字段名称确认密码对应的错误消息。()

请帮忙!

1 个答案:

答案 0 :(得分:0)

1) 必需|| md5

附近有两个管道标志
$this->form_validation->set_rules('cnew_password','Confirm Password','trim|required||md5');

将其更改为

$this->form_validation->set_rules('cnew_password','Confirm Password','trim|required|md5');

2)在此阶段将输入更改为md5并不好。
您必须使用password_hash功能。
阅读更多&gt;&gt; http://php.net/manual/en/function.password-hash.php

3)您忘了加载模型。 $this->load->model('customer_model');

相关问题