Хэш-пароль в codeigniter
Я хочу хэшировать свои пароли в codeigniter.Я не могу найти способ обойти это
это моя модель вставки, пароль шифруется при вставке данных клиента.
Я не могу расшифровать его при входе в систему
Что я уже пробовал:
<pre>public function insert_client($codeDigits) { $hash = $this->hash($_POST['Password']); $response = $this->taken_email($_POST['Email']); if($response){ $returned = false; }else{ $this->FirstName = $_POST['FirstName']; // please read the below note $this->LastName = $_POST['LastName']; $this->Email = $_POST['Email']; $this->Role_Id = 2; $this->Password = $hash; $this->PhoneNo = $_POST['PhoneNo']; $this->confirmCode = $codeDigits; $this->db->insert('users', $this); $returned = true; } return $returned; }
это моя хэш-модель пароля
public function hash($password) { $hash = password_hash($password,PASSWORD_DEFAULT); return $hash; } //verify password public function verifyHash($password,$vpassword) { if(password_verify($password,$vpassword)) { return TRUE; } else{ return FALSE; } }
во время входа в систему я не могу расшифровать пароль,пароль все равно шифруется в базе данных правильно.
public function login_model($email,$password) { $this->db->select('*'); $this->db->from('users'); $this->db->where(' Email',$email); $this->db->where('Password',$password); $this->db->where('Role_Id !=',1); $query = $this->db->get(); if($query->num_rows() > 0) { $results = $query->row(); // storing the results in the variable $data foreach($results as $data) { if($this->verifyHash($this->$password,$data->password == TRUE)) { $dat = array( 'id_user' => $data->id_User, 'FirstName' => $data->FirstName, 'LastName' => $data->LastName, 'Phonenumber' => $data->PhoneNo, 'Email' => $data->Email, 'role' => $data->Role_Id, 'imageUrl' => $data->imageUrl, 'category_id' => $data->category_id, 'IdType' => $data->IdType, 'IdNumber' => $data->IdNumber, 'DOB' => $data->DOB, 'confirmCode' => $data->confirmCode, 'confirmed' => $data->confirmed, 'Points'=> $data->Points ); } $this->session->set_userdata($dat); return true; } } else{ return false; } }
это моя функция входа в контроллер
public function post_login() { $this->form_validation->set_rules('Email', 'Email', 'trim|required|min_length[6]'); $this->form_validation->set_rules('Password', 'Password', 'trim|required|min_length[6]'); if($this->form_validation->run() == TRUE ){ if($this->Users_model->login_model($_POST['Email'],$_POST['Password'])){ //test for redirect if($_SESSION['confirmed'] == true) { if ($_SESSION['role'] == 2) { redirect("Client/welcome"); } else if ($_SESSION['role'] == 3) { redirect("Pro/welcome"); } }else{ redirect("Welcome/confirmCode"); } // test for redirect }else{ // $this->session->set_flashdata('err', true); redirect("Welcome/login"); } }else{ $this->login(); } }
Как я могу расшифровать пароль при входе в систему?