Bcrypt Codeigniter

问题描述 投票:0回答:1

我的控制器上有这个代码(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

但结果我得到'密码不一样'。怎么解决这个?

php mysql codeigniter codeigniter-3 bcrypt
1个回答
1
投票

希望对你有帮助

您正在使用此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');
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.