Привет, я пытаюсь создать функцию пароля пользователя для панели управления пользователя, и я обнаружил, что что-то здесь пыталось редактировать, но у меня есть некоторые проблемы.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 в модели
старая аутентификация пароля выполняется в модели. посмотрите здесь 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