Php Codeigniter在登录控制器上给出异常结果

Php Codeigniter在登录控制器上给出异常结果,php,codeigniter,Php,Codeigniter,我正在使用codeigniter框架。我有一个登录模型和一个带有视图的控制器。出于测试目的,我在数据库的用户表中设置了admin作为用户名,admin作为密码。 但是,当我使用admin13356或admindsgsd或AdminWhatch并使用admin作为密码时,登录是成功的。我不明白为什么 我的控制器功能如下 function check(){ $this->load->model('loginModel'); $query = $this-&

我正在使用codeigniter框架。我有一个登录模型和一个带有视图的控制器。出于测试目的,我在数据库的用户表中设置了admin作为用户名,admin作为密码。 但是,当我使用admin13356或admindsgsd或AdminWhatch并使用admin作为密码时,登录是成功的。我不明白为什么

我的控制器功能如下

function check(){
        $this->load->model('loginModel');
        $query = $this->loginModel->validate();
        if($query){
            $data = array('username' => $this->input->post('username'),
                           'is_logged_in' => true
                        );
            $this->session->set_userdata($data);
            //redirecting to appropriate page 
            redirect('success');
        }else{
            $this->session->set_flashdata('loginCheck','Username/Password Comination Incorrect!');
            redirect('login');
        }
    }
我的模型如下

function validate(){
            $this->db->where('username', $this->input->post('username'));
            $this->db->where('password', md5($this->input->post('password')));
            $query = $this->db->get('users');
            if($query->num_rows() == 1){
                return true;
            }

        }
函数验证(){
//转储接收到的所有post变量
回声';
function validate($username,$password){
            $this->select('*');
            $this->from('table_name');
            $this->db->where('username', $username);
            $this->db->where('password', md5($password));
            $query = $this->db->get();
            if($query->num_rows() == 1){
                return true;
            }

        }
打印($this->input->post()); 回声“
”;
function validate($username,$password){
            $this->select('*');
            $this->from('table_name');
            $this->db->where('username', $username);
            $this->db->where('password', md5($password));
            $query = $this->db->get();
            if($query->num_rows() == 1){
                return true;
            }

        }
function validate(){
    $this->db->where('username', $this->input->post('username'));
    $this->db->where('password', md5($this->input->post('password')));
    $query = $this->db->get('users');
    if($query->num_rows() == 1){
        return true;
    }

    return false;
}
$this->db->where('username'),$this->input->post('username'); $this->db->where('password',md5($this->input->post('password')); $query=$this->db->get('users'); //转储查询结果是什么 回声“
”;
function validate($username,$password){
            $this->select('*');
            $this->from('table_name');
            $this->db->where('username', $username);
            $this->db->where('password', md5($password));
            $query = $this->db->get();
            if($query->num_rows() == 1){
                return true;
            }

        }
function validate(){
    $this->db->where('username', $this->input->post('username'));
    $this->db->where('password', md5($this->input->post('password')));
    $query = $this->db->get('users');
    if($query->num_rows() == 1){
        return true;
    }

    return false;
}
打印($query->result()); 回声';
function validate($username,$password){
            $this->select('*');
            $this->from('table_name');
            $this->db->where('username', $username);
            $this->db->where('password', md5($password));
            $query = $this->db->get();
            if($query->num_rows() == 1){
                return true;
            }

        }
//如果($query->num_rows()==1){ //返回true; //} }

您的代码看起来不错,但是您能检查它是否正确地传递了正确的数据吗?请先尝试转储它。像上面的代码一样检查数据和查询结果。

表中有多少记录

试试这个代码

function check(){
    $this->load->model('loginModel');
    $query = $this->loginModel->validate($this->input->post('username'), $this->input->post('password'));
    if($query){
        $data = array(
           'username' => $this->input->post('username'),
           'is_logged_in' => true
        );
        $this->session->set_userdata($data);
        //redirecting to appropriate page 
        redirect('success');
    }else{
        $this->session->set_flashdata('loginCheck', 'Username/Password Combination Incorrect!');
        redirect('login');
    }
}

将您的
用户名
密码
传递给函数

您正在运行哪个版本的PHP?我以前在PHP中遇到过一些问题,对于非返回,它返回TRUE

尝试将
return false
添加到validate()方法:

此外,模型应该是输入不可知的。一定要考虑将
$this->input->post()
移动到控制器,并将值作为参数传入:

这允许您在其他场景中使用
validate()
方法。例如(当用户名不是通过post而是通过会话提供时,重新验证密码)

控制器

型号


代码看起来不错,但我会从模型中删除post数据变量,而是在控制器中创建变量,并将它们作为
validate()
函数的参数传递。