Php 通过代码点火器中的MVC链正确发送数据

Php 通过代码点火器中的MVC链正确发送数据,php,model-view-controller,codeigniter,Php,Model View Controller,Codeigniter,由于我对igniter和MVC代码还不熟悉,我正在缓慢但肯定地通过数据库中存储的数据获取登录表单,以便用户登录 我根据论坛上的文章和建议拼凑出了我当前的版本,但是我现在有点困惑,为什么数据似乎没有被正确地存储和发送 如果密码不正确,我会将登录表单设置为重新加载表单(最终会添加一条消息) 也就是说,当我输入正确的登录信息时,它会重新加载页面。这只能说明我没有正确地与数据库通信,或者没有正确地使用$data变量发送和/或存储信息 以下是我的代码: 型号: <?php class User_m

由于我对igniter和MVC代码还不熟悉,我正在缓慢但肯定地通过数据库中存储的数据获取登录表单,以便用户登录

我根据论坛上的文章和建议拼凑出了我当前的版本,但是我现在有点困惑,为什么数据似乎没有被正确地存储和发送

如果密码不正确,我会将登录表单设置为重新加载表单(最终会添加一条消息)

也就是说,当我输入正确的登录信息时,它会重新加载页面。这只能说明我没有正确地与数据库通信,或者没有正确地使用
$data
变量发送和/或存储信息

以下是我的代码:

型号:

<?php

class User_model extends CI_Model {
   function __construct()
        {
            // Call the Model constructor
            parent::__construct();
        }

    function login($data = array())
    {
    // validate data
    if( !empty($data) ) return FALSE;

    // retrieve query
    $query = $this->db
            ->from('users')
            ->where($data)
            ->get();

    // Check if query row exists
    if($query->row())
    {
        // Query row exists, return query row
        return $query->row();
    }
    else
    {
        // Query row doesn't exist, return FALSE
        return FALSE;
    }
  }
}

看起来您在任何时候都不会从用户模型类调用login方法-您只是在实例化该类。您应该从控制器调用model方法-我还没有测试过这段代码,但希望它能让您走上正确的轨道:

    function validate_credentials () {
        $this->load->model('User_model');
        $data = array(
            'email' => $this->input->post('email'),
            'password' => $this->input->post('password')
        );
        $query = $this->User_model->login($data);

        if($query)
        {
            $data['is_logged_in'] = true;
            $this->session->set_userdata($data);
            redirect('account/dashboard');
        }
        else
        {
            $this->index();
        }
    }

我已经采用了你的代码,仍然在加载登录表单。我不确定模型中的函数login($data=array())是否正在收集控制器$this->load->model('user_model')中创建的数据;$data=array('email'=>$this->input->post('email'),'password'=>$this->input->post('password');$query=$this->user\u model->login($data);我假设这与登录($data=array())一样正常,或者需要在其中包含数组。您可能希望尝试将“$this->output->enable_profiler(TRUE);”放在控制器中的某个位置,看看查询是否正在运行。如果不知道,您知道脚本没有走那么远,可能数据没有正确地传递到model.good调用的登录方法。“查询”下显示“数据库驱动程序当前未加载”
<?php
class Auth extends CI_Controller {
    function __construct()
        {
            // Call the Model constructor
            parent::__construct();
        }

    // this is automatically called if no other function is called
    // it simply turns around and calls the login() function to show the login page

    public function index() {

        $this->login();
    }

    public function login() {   
    $data['main_content'] = 'auth/login';
    $this->load->view('includes/templates/main_page_template', $data);

    }

    function validate_credentials () {
        $query = $this->load->model('user_model');



        if($query)
        {
            $data = array(
                'email' => $this->input->post('email'),
                'password' => $this->input->post('password'),
                'is_logged_in' => true
            );

            $this->session->set_userdata($data);
            redirect('account/dashboard');
        }
        else
        {
            $this->index();
        }
    }
}
    function validate_credentials () {
        $this->load->model('User_model');
        $data = array(
            'email' => $this->input->post('email'),
            'password' => $this->input->post('password')
        );
        $query = $this->User_model->login($data);

        if($query)
        {
            $data['is_logged_in'] = true;
            $this->session->set_userdata($data);
            redirect('account/dashboard');
        }
        else
        {
            $this->index();
        }
    }