我在我的控制器(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');
}
}并且我的数据库中有我的pass_user的值$2y$10$uutShFadO9zEvLMLiHIwcem5hMeFHIG9UQtXeCtKs8ClVJGWZgwSy。
但是我得到的结果是“密码不一样”。如何解决这个问题?
发布于 2018-07-05 14:12:26
希望这能帮到你
您使用此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');
}
}https://stackoverflow.com/questions/51184313
复制相似问题