我是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;
}
}
有人可以帮我解决这个问题吗?