Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何重定向到CodeIgniter中的另一个控制器?_Php_Codeigniter_Model View Controller - Fatal编程技术网

Php 如何重定向到CodeIgniter中的另一个控制器?

Php 如何重定向到CodeIgniter中的另一个控制器?,php,codeigniter,model-view-controller,Php,Codeigniter,Model View Controller,我正在与CodeIgniter合作新项目。目前Im卡在登录模块中。我的代码和数据库模式如下所示: function validate_credentials() { $this->load->model('membership_model'); $postdata = $this->input->post(); //you can run any checks or cleaning you need to do to the postdata y

我正在与CodeIgniter合作新项目。目前Im卡在登录模块中。我的代码和数据库模式如下所示:

function validate_credentials() {
    $this->load->model('membership_model');
    $postdata = $this->input->post();
    //you can run any checks or cleaning you need to do to the postdata your passed in, then send it to model
    $result = $this->membership_model->validate($postdata);
    if ($result) { // if the user's credentials validated...
      $data = array(
          'username' => $postdata['username'],
          'is_logged_in' => true
      );
      $this->session->set_userdata($data);
      //redirect('site/members_area');

      if ($result->jabatan === "Manajemen") { //CHANGE
        redirect('site/manajemen_page');
      } else {
        redirect('site/eo_page');
      }
    } else { // incorrect username or password
      $this->index();
    }
}
这是我的数据库模式(DB:Membership,Table:User):

这是我的模式(会员制模式):


你们能帮我吗?

好吧,你们错过了几件事。首先,您没有从模型返回结果,因此变量
$jabatan
未定义。其次,您的模型中不应该有任何
input->post()
,postdata应该只在控制器中处理

您的控制器功能
validate\u凭证
应按如下方式重新编写:

function validate_credentials() {
    $this->load->model('membership_model');
    $postdata = $this->input->post();
    //you can run any checks or cleaning you need to do to the postdata your passed in, then send it to model
    $result = $this->membership_model->validate($postdata);
    if ($result) { // if the user's credentials validated...
      $data = array(
          'username' => $postdata['username'],
          'is_logged_in' => true
      );
      $this->session->set_userdata($data);
      //redirect('site/members_area');

      if ($result->jabatan === "Manajemen") { //CHANGE
        redirect('site/manajemen_page');
      } else {
        redirect('site/eo_page');
      }
    } else { // incorrect username or password
      $this->index();
    }
}
以及您的模型功能验证:

function validate($data) {
    $this->db->select("*");
    $this->db->from("user");
    $this->db->where('username', $data['username']);
    $this->db->where('password', md5($data['password']));
    $query = $this->db->get();

    if ($query->num_rows == 1) {
      return $query->row();
    }else{ 
      return false;
    }
}

我看到的第一个问题是,您的模型中不应该有任何
input->post()
。这些应该从你的控制员那里传过来你说的“不工作”是什么意思?详细说明。
$jabatan
未定义,假设这是试图登录的用户的名称吗?@B-and-P不工作意味着这些if函数出错。@CodeGodie$jabatan假设从数据库字段中检索到:jabatanim尝试您的代码,它给我错误:严重性:注意消息:未定义索引:jabatan文件名:models/membership\u model.php行号:10。第10行是:$this->db->where('jabatan',$data['jabatan']);来自HTML表单的postdata没有jabatan,因此我们在模型中不需要它。我更新了我的代码,检查一下。没问题,随时都可以
<h1>Login</h1>
<?php 
echo form_open('login/validate_credentials');
echo form_input('username', 'Username');
echo form_password('password', 'Password');
echo form_submit('submit', 'Login');
//echo anchor('login/signup', 'Create Account');
echo form_close();
?>
<?php $this->load->view('includes/footer'); ?>
<?php

class Login extends CI_Controller {

    function index()
{
    $data['main_content'] = 'login_form';
    $this->load->view('includes/template', $data);      
}

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

    if($query) // if the user's credentials validated...
    {
        $data = array(
            'username' => $this->input->post('username'), 
            'is_logged_in' => true
        );
        $this->session->set_userdata($data);
        //redirect('site/members_area');

        if($jabatan == "Manajemen"){
            redirect('site/manajemen_page');
        }
        else{
            redirect('site/eo_page');
        }
    }
    else // incorrect username or password
    {
        $this->index();
    }
}   

function signup()
{
    //$data['main_content'] = 'signup_form';
    //$this->load->view('includes/template', $data);
    $this->session->set_userdata($data);
    redirect('site/signup_page');
} 
}
<?php

class Site extends CI_Controller 
{
    function __construct()
    {
        parent::__construct();
        $this->is_logged_in();
    }

function members_area()
{
    $this->load->view('logged_in_area');
}

function signup_page() // signup form
{ 
    $this->load->view('signup_form');
}

function manajemen_page() // just for Manajemen
{
    $this->load->view('manajemen_page');
}
function eo_page() // just for EO
{
    $this->load->view('eo_page');
}

function another_page() // just for sample
{
    echo 'good. you\'re logged in.'; 
}

function is_logged_in()
{
    $is_logged_in = $this->session->userdata('is_logged_in');
    if(!isset($is_logged_in) || $is_logged_in != true)
    {
        echo '<br><br><br><br><br><br><br>';
        echo '<strong>';
        echo '<center>You don\'t have permission to access this page. <a href="../login">Login</a></center>';   
        echo '</strong>';
        die();      
        //$this->load->view('login_form');
    }       
}   
}
if($jabatan == "Manajemen"){
            redirect('site/manajemen_page');
        }
        else{
            redirect('site/eo_page');
        }
function validate_credentials() {
    $this->load->model('membership_model');
    $postdata = $this->input->post();
    //you can run any checks or cleaning you need to do to the postdata your passed in, then send it to model
    $result = $this->membership_model->validate($postdata);
    if ($result) { // if the user's credentials validated...
      $data = array(
          'username' => $postdata['username'],
          'is_logged_in' => true
      );
      $this->session->set_userdata($data);
      //redirect('site/members_area');

      if ($result->jabatan === "Manajemen") { //CHANGE
        redirect('site/manajemen_page');
      } else {
        redirect('site/eo_page');
      }
    } else { // incorrect username or password
      $this->index();
    }
}
function validate($data) {
    $this->db->select("*");
    $this->db->from("user");
    $this->db->where('username', $data['username']);
    $this->db->where('password', md5($data['password']));
    $query = $this->db->get();

    if ($query->num_rows == 1) {
      return $query->row();
    }else{ 
      return false;
    }
}