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