Bcrypt Codeigniter

0

У меня этот код на моем контроллере (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
    Вы не можете расшифровать пароль, хранящийся в bcrypt. В этом весь смысл использования криптографической хеш-функции.
  • 0
    если $ 2y $ 10 $ uutShFadO9zEvLMLiHIwcem5hMeFHIG9UQtXeCtKs8ClVJGWZgwSy - это зашифрованное значение слова «abcd1234», и оно не работает, тогда проверяйте пробел при вставке ... если вы забыли действительный пароль, тогда посмотрите, как изменить альтернативу, вы увидите, как изменить альтернативу, вы увидите, как они изменяют пароль, ищите, как они будут расшифровываться Ваш пропуск, потому что расшифровка невозможна, как Сачина Агера упомянула выше.
Показать ещё 1 комментарий
Теги:
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');
        }
    }
  • 0
    Если мой ответ поможет вам, пожалуйста, не стесняйтесь проверить мой ответ, как зеленый

Ещё вопросы

Сообщество Overcoder
Наверх
Меню