Bcrypt Codeigniter

у меня есть этот код на моем контроллере (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 в моей базе данных.

Но в результате я получаю «пароль не тот же». Как это решить?

0

Решение

Надеюсь, что это поможет вам

Вы возвращаете многомерные данные, используя это 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');
}
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector