у меня есть этот код на моем контроллере (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');
}
}
Других решений пока нет …