2016-06-02 5 views
-1

Привет, я пытаюсь создать функцию пароля пользователя для панели управления пользователя, и я обнаружил, что что-то здесь пыталось редактировать, но у меня есть некоторые проблемы.Codeigniter User Change Password

Здесь контроллер часть

public function ucp_change_pass() { 

    $data2['title'] = "Change Password"; 
    $data = new stdClass(); 
    $this->form_validation->set_rules('old_password', 'Old Password', 'trim|required|min_length[4]'); 
    $this->form_validation->set_rules('new_password', 'New Password', 'trim|required|min_length[4]'); 
    $this->form_validation->set_rules('new_password_confirm', 'Old Password', 'trim|required|min_length[4]|matches[new_password]'); 
    if ($this->form_validation->run() === false) { 
    $this->load->view('header', $data2); 
    $this->load->view('ucp/ucp_menu'); 
    $this->load->view('ucp/ucp_change_pass', $data); 
    $this->load->view('footer'); 


     } else {  
    $old_password = $this->input->post('old_password'); 
    $new_password_confirm = $this->input->post('new_password_confirm'); 
    $query = $this->Home_model->checkOldPass($old_password); 
    if($query){ 
    $query = $this->Home_model->saveNewPass($new_password_confirm); 
    if($query){ 
     redirect('./ucp_change_pass_success'); 
    }else{ 
     redirect('./ucp_change_pass'); 
    } 
    } 

} 

} 

Здесь модель часть

public function checkOldPass($old_password){ 
$this->db->where('username', $this->session->userdata('username')); 
$query = $this->db->get('users'); 
$row = $query->row(); 
echo "Old Password : ".$this->hash_password($old_password)."<br>"; 
echo "From DB : ".$row->password."<br>"; 
die; 

if($query->num_rows > 0){ 
    $row = $query->row(); 
    if($old_password == $row->password){ 
    return true; 
    }else{ 
    return false; 
    } 
} 

}

public function saveNewPass($new_password_confirm){ 
$array = array(
     'password'=>$this->hash_password($new_password_confirm) 
     ); 
$this->db->where('username', $this->session->userdata('username')); 
$query = $this->db->update('users'); 
if($query){ 
    return true; 
}else{ 
    return false; 
} 
} 

и это вид

<?php defined('BASEPATH') OR exit('No direct script access allowed'); ?> 
<?php 
if (isset($_SESSION['logged_in']) != TRUE) { 
echo redirect('/login'); 
} 
?> 
<div class="col-md-9"> 
<div class="list-group"> 
<div class="list-group-item ucp-nav-bar">User Control Panel</div> 
<div class="list-group-item"> 


  <?= form_open() ?> 



      <div class="form-group"> 
       <label for="name">Old Password</label> 
       <input type="password" class="form-control" id="old_password" name="old_password" placeholder="Enter your current password"> 

      </div> 
      <div class="form-group"> 
       <label for="email">New Password</label> 
       <input type="password" class="form-control" id="new_password" name="new_password" placeholder="Enter a new password"> 

      </div> 
      <div class="form-group"> 
       <label for="message">New Password Confrim</label> 
       <input type="password" class="form-control" id="new_password_confirm" name="new_password_confirm" placeholder="Re-enter the new password for confirmation"> 

      </div> 

      <div class="form-group"> 
       <input type="submit" class="btn btn-success" value="Change  Password"> 
      </div> 
     </form> 

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

это функция для hash_password в модели

ответ

0

Вы должны расшифровать за $ old_password в контроллере. Измените свою часть контроллера таким образом.

$old_password = $this->input->post('old_password'); 
$encrypted_old_password=password_hash($old_password) 
$new_password_confirm = $this->input->post('new_password_confirm'); 
$query = $this->Home_model->checkOldPass($encrypted_old_password); 

Вам необходимо зашифровать старый пароль, а затем передать его модели.

+0

старая аутентификация пароля выполняется в модели. посмотрите здесь echo «Старый пароль:». $ this-> hash_password ($ old_password). "
"; /////// также функция hash_password - это частная функция hash_password ($ password) { \t \t \t \t return password_hash ($ password, PASSWORD_BCRYPT); \t \t \t} – rooger