Php 使用codeigniter创建登录表单时出现的问题
我首先在纸上画出了这个功能的逻辑,所以我要做的事情有点道理。我创建了表单,表单在提交时调用控件类中的一个方法,然后发送给模型进行检查 我相信控制器中的逻辑是正确的,所以我认为问题在于模型类中的方法Php 使用codeigniter创建登录表单时出现的问题,php,codeigniter,Php,Codeigniter,我首先在纸上画出了这个功能的逻辑,所以我要做的事情有点道理。我创建了表单,表单在提交时调用控件类中的一个方法,然后发送给模型进行检查 我相信控制器中的逻辑是正确的,所以我认为问题在于模型类中的方法 function validate() { $this->db->where('username', $this->input->post('username')); $this->db->where('password', $this->in
function validate()
{
$this->db->where('username', $this->input->post('username'));
$this->db->where('password', $this->input->post('password'));
$query = $this->db->get('membership');
return $query;
}
我希望$query返回true或false,就像布尔值一样。相反,无论输入的数据是否与数据库中的数据匹配,或者输入的数据是否完全错误,其输出都是真实的。下面是控制器类中的方法
function validate_credentials()
{
$this->form_validation->set_rules('username', 'username', 'required');
$this->form_validation->set_rules('password', 'password', 'required');
if ($this->form_validation->run() == FALSE)
{
$this->createAdminForm();
}
else
{
$this->load->model('admin_Model');
$query = $this->admin_Model->validate();
if($query)
{
redirect('pages');
}
else // incorrect username or password
{
$this->createAdminForm();
}
}
}
找到我自己的答案,将validate()方法更改为
function validate()
{
$this->db->where('username', $this->input->post('username'));
$this->db->where('password', $this->input->post('password'));
$query = $this->db->get('membership');
if($query->num_rows != 0)
{
$validate=true;
return $validate;
}
}
我用不同的方式,我觉得更清楚:
public function login(){
if($this->input->post('login')){
$this->form_validation->set_rules('username', 'Username', 'required|callback_valid_login');
$this->form_validation->set_rules('password', 'Password', 'required|callback_valid_password');
if($this->form_validation->run($this)){
$user = $this->user_model->get_by_field('username', $this->input->post('username'));
$this->session->set_userdata($user);
redirect("pages");
} else {
$this->load->view('login_failed');
}
} else
$this->load->view('login');
}
而不是
$validate=true;return$validate
您可以简单地说return TRUE
。