У меня этот код на моем контроллере (codeigniter)
это мой метод login
function login()
{
$post = $this->input->post();
echo $post['pass_user'];
if(!empty($post))
{
$this->db->where('name_user',$post['name_user']);
$data = $this->db->get('tb_user')->result_array();
if(empty($data))
{
echo "Tidak ada username";
}
else
{
if(password_verify($post['pass_user'] , $data['pass_user']))
{
$this->session->set_userdata($data['name_user'], $data['lvl_user']);
echo "password same";
}
else
{
echo "password not same";
}
}
}
else
{
$this->load->view('login');
}
}
и у меня есть значение $2y$10$uutShFadO9zEvLMLiHIwcem5hMeFHIG9UQtXeCtKs8ClVJGWZgwSy
для моего pass_user
в моей базе данных.
Но в результате я получаю "пароль не тот же". Как это решить?
Надеюсь, что это поможет вам
Вы возвращаете многомерные данные, используя этот result_array();
вы должны использовать его с ключом в методе password_verify
подобном этому $data[0]['pass_user']
, это будет работать, если у вас есть только одна строка, поэтому лучше возвращать данные одного массива с помощью row_array();
Заменить эту строку кода
$data = $this->db->get('tb_user')->result_array();
с этим
$data = $this->db->get('tb_user')->row_array();
Весь код
function login()
{
$post = $this->input->post();
echo $post['pass_user'];
if(!empty($post))
{
$this->db->where('name_user',$post['name_user']);
//$data = $this->db->get('tb_user')->result_array();
$data = $this->db->get('tb_user')->row_array();
if(empty($data))
{
echo "Tidak ada username";
}
else
{
if(password_verify($post['pass_user'] , $data['pass_user']))
{
$this->session->set_userdata($data['name_user'], $data['lvl_user']);
echo "password same";
}
else
{
echo "password not same";
}
}
}
else
{
$this->load->view('login');
}
}