代码点火器登录验证问题


Code Igniter Login Validation Problems

我正在使用Code Igniter为自己构建一个测试网站,并且正在与Logins作斗争。根据phpMyAdmin,我可以创建新用户并将其存储在我的数据库中,而不会遇到任何麻烦,但我很难真正登录

我当前的代码是:

控制器:

public function index()
{
    $this->home();
}
public function home()
{
    $this->load->model('model_users');
    $data['emails'] = $this->model_users->getEmails();
    $data['users'] = $this->model_users->getUsers();
    $this->load->view('login', $data);
}
public function validate_credentials() {
    $this->load->model('model_users');
    $query = $this->model_users->validate();

    if($query){
        $data = array(
            'email' => $this->input->post('email'),
            'is_logged_in' => true
        );
        $this->session->set_userdata($data);
        redirect('trade');
    }
    else{
        $this->load->view('about_us');
    }
}

型号:

    <?php
class Model_users extends CI_Model {
    function __construct() {
        parent::__construct(); //Call the model constructor
    }
    function validate() {
        $this->db->where('email', $this->input->post('email'));
        $this->db->where('password', md5($this->input->post('password')));
        $query = $this->db->get('users');
        if($query->num_rows == 1) {
            return true;
        }
    }
    function create_member() {
        $email = $this->input->post('email');
        $new_user = array(
            'email' => $this->input->post('email'),
            'name' => $this->input->post('name'),
            'password' => md5($this->input->post('password'))
        );
        $insert = $this->db->insert('users', $new_user);
        return $insert;
    }
    function check_email_exists($email) {
        $this->db->where('email', $email);
        $result = $this->db->get('users');
        if($result->num_rows() > 0) {
            return FALSE; //email taken
        }else{
            return TRUE; //email available
        }
    }
    function getEmails() {
        $query = $this->db->query('SELECT email FROM users'); 
        if($query->num_rows() > 0){
            return $query->result();
        } else{
            return NULL;
        }
    }
    function getUsers() {
        $query = $this->db->query('SELECT * FROM users');
        if($query->num_rows() > 0) {
            return $query->result();
        } else {
            return NULL;
        }
    }
}

视图:

   <body>    
    <!-- Page Content -->
    <div id="page-content-wrapper">
        <div class="container-fluid">
            <div class="row">
                <div class="col-lg-12">
                    <div id="login_form">
                        <?php if(isset($successful_creation)) { ?>
                            <h3><?php echo $successful_creation; ?></h3>
                        <?php } else { ?>
                            <h1><i class="fa fa-user fa-fw fa-lg"></i>Login</h1>
                        <?php } ?>
                        <?php
                        echo form_open('welcome/validate_credentials');
                        echo form_input('email', '', 'placeholder="Email"');
                        echo form_password('password', '', 'placeholder="Password" class="password"');
                        echo form_submit('submit', 'Login');
                        echo anchor('signup', 'Create Account');
                        echo form_close();
                        ?>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <!-- /#page-content-wrapper -->
</div>
<!-- /#wrapper -->

当我在登录页面上点击登录时,我总是被重定向到About_Us页面,我把它放在那里只是为了测试登录是否有效。我的代码中有没有遗漏的问题?如有任何帮助,我们将不胜感激。

在模型更新validate()方法中,使用$query->num_rows()而不是$query->num_rows。应该是这样的:

if($query->num_rows() == 1) {
    return true;
}