使用password_verify进行的登录验证无法正常工作

时间:2019-07-14 20:31:35

标签: php codeigniter passwords password-hash php-password-hash

我是Codeigniter的新手,尤其是php框架。我正在尝试在codeigniter上进行登录验证。但它不能正常工作,正如我希望的那样。我确定我输入的用户名和密码是否正确,所以我猜我的问题是password_verify。这是我的控制器和模型代码:

loginController.php

function __construct()
{
    parent::__construct();
    $this->load->library('form_validation');
    $this->load->model('loginModel');
}

function index()
{
    $this->load->view('loginView');
}

function auth()
{
    $this->form_validation->set_rules('username', 'Username', 'required|max_length[50]');
    $this->form_validation->set_rules('password', 'Password', 'required|max_length[30]');

    if($this->form_validation->run() == TRUE)
    {
        $adminCheck = $this->loginModel->admin();
        $userCheck = $this->loginModel->user();

        if ($adminCheck == TRUE)
        {
            $data = $adminCheck->row_array();
            $this->session->set_userdata('login', TRUE);
            $this->session->set_userdata('access', 'Admin');
            $this->session->set_userdata('name', $data['name']);
            redirect('admin');
        }
        elseif ($userCheck == TRUE)
        {
            $data = $userCheck->row_array();
            $this->session->set_userdata('login', TRUE);
            $this->session->set_userdata('access', 'User');
            $this->session->set_userdata('name', $data['name']);
            redirect('user');
        }
        else
        {
            $this->session->set_flashdata('error', 'The username or password incorrect!');
            redirect('login');
        }
    }
    else
    {
        $this->index();
    }
}

loginModel.php

function admin()
{
    $username = set_value('username');
    $password = set_value('password');

    $query = $this->db
    ->select('*')
    ->from('tbadmin')
    ->where('username', $username)
    ->where('password', $password)
    ->get();

    if ($query->num_rows() > 0)
    {
        $result = $query->row_array();
        return password_verify($password, $result['password']);
    }
    else
    {
        return false;
    }
}

function user()
{
    $username = set_value('username');
    $password = set_value('password');

    $query = $this->db
    ->select('*')
    ->from('tbuser')
    ->where('username', $username)
    ->where('password', $password)
    ->get();

    if ($query->num_rows() > 0)
    {
        $result = $query->row_array();
        return password_verify($password, $result['password']);
    }
    else
    {
        return false;
    }
}

有人可以帮我解决这个问题吗?

0 个答案:

没有答案