Bcrypt Codeigniter
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
。
但结果我得到'密码不一样'。怎么解决这个?
答案
希望对你有帮助
您正在使用此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');
}
}
以上是关于Bcrypt Codeigniter的主要内容,如果未能解决你的问题,请参考以下文章