这是我的控制器
public function login() {
$this->load->model('admin_model');
$access = $this->admin_model->check_login();
$data['content'] = 'content/home';
$data['title'] = 'Admin Panel Login';
if($access) {
$data= array(
'email' => $this->input->post('email'),
'is_logged_in' => true
);
$this->session->set_userdata($data);
redirect('admin/index/dashboard');
} else {
$this->index($page = 'home', $msg = 'failure');
}
这是我的模特
public function check_login() {
$this->db->where('email', $this->input->post('email'));
$this->db->where('password', $this->input->post('password'));
$query = $this->db->get('customers');
return (bool) $query->num_rows;
}
所以我一直在努力的是我的Admin构造函数中的一个函数,它将确保用户在登录之前无法访问任何页面。问题是当我进入admin / login时,它将is_logged_in设置为true ,即使check_login函数应该返回false。它说它找到了一行,即使我的数据库中只有一行它不应该匹配。
我是CI的新手,所以请保持温柔。 :)
答案 0 :(得分:2)
num_rows()
是一种方法(不是属性),应该更像这样使用:
return $query->num_rows() > 0;
答案 1 :(得分:1)
扩大科林的回答:
public function check_login() {
$this->db->where('email', $this->input->post('email'));
$this->db->where('password', $this->input->post('password'));
$query = $this->db->get('customers');
if ($query->num_rows()>0) {
return TRUE;
} else {
return FALSE;
}
}
答案 2 :(得分:0)
我没有看到你模型中的重点。
模型不能(或者即使它可以,不应该)从视图中获取变量。它应该来自控制器。
您确定,帖子变量出现在模型中吗?
更好的解决方案。在控制器中捕获post变量。
在模型中,使用参数创建函数。
然后在控制器中,像这样检索它。
$data['bla'] = $this->admin_model->method_name($this->input->post('blabla'));
这将防止所有这些混淆。