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$uutShFadO9zEvLMLiHIwcem5hMeFHIG9UQtXeCtKs8ClVJGWZgwSypass_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的主要内容,如果未能解决你的问题,请参考以下文章

如何将密码文本与 bcrypt 哈希值进行比较?

CodeIgniter 登录功能表单不起作用

将用户密码从加盐 SHA1 升级到 bcrypt

初学者 CodeIgniter 概念 - 可重用的视图代码,该去哪里? (帮手?)

如何使用已有的 bcrypt 代码实施护照?

您如何(如果可能)使用以下代码在网站中实现 Bcrypt 和 JWT?