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

瑜伽

我正在使用CodeIgniter进行新项目。目前,我卡在登录模块中。我的代码和数据库架构如下所示:

这是我的数据库架构(DB:成员身份,表:用户):

---------------------------------------------------------------------------------------------------------------------------------
id   | nama_depan   | nama_belakang |   username |  password                        |   email_address       |   jabatan         |
-----|--------------|---------------|------------|----------------------------------|-----------------------|-------------------|
2    | Joe          | Sambera       |   sambera  | e10adc3949ba59abbe56e057f20f883e |   [email protected]   |   Manajemen       |
10   | holmes       | Richard       |   holmes   | 81dc9bdb52d04dc20036dbd8313ed055 |   [email protected]    |   Event Organizer |
---------------------------------------------------------------------------------------------------------------------------------

这是我的模型(membership_model):

<?php

class Membership_model extends CI_Model {

function validate()
{
    $this->db->where('username', $this->input->post('username'));
    $this->db->where('jabatan', $this->input->post('jabatan'));
    $this->db->where('password', md5($this->input->post('password')));
    $query = $this->db->get('membership');

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

}

function create_member()
{

    $new_member_insert_data = array(
        'nama_depan' => $this->input->post('first_name'),
        'nama_belakang' => $this->input->post('last_name'),
        'email_address' => $this->input->post('email_address'),         
        'username' => $this->input->post('username'),
        'jabatan' => $this->input->post('jabatan'),
        'password' => md5($this->input->post('password'))
        //'jabatan' => $this->input->post('jabatan'))                       
    );

    $insert = $this->db->insert('membership', $new_member_insert_data);
    return $insert;
}
}

这是我的视图(登录):

<?php $this->load->view('includes/header'); ?>  

<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');
    }       
}   
}

如您在“控制器/登录”中所见,在下面的这段代码中,我想尝试对登录的用户进行身份验证。如果登录站点的Managament将重定向到控制器/站点中的manajemen_page。如果事件组织者登录,该站点将被重定向到控制器/站点中的EO_page。我下面的代码不起作用

if($jabatan == "Manajemen"){
            redirect('site/manajemen_page');
        }
        else{
            redirect('site/eo_page');
        }

你们能帮我吗?

CodeGodie

好的,您在这里错过了几件事。首先,您没有从模型中返回结果,因此您的变量$jabatan未定义。其次,您的模型中不应包含任何模型input->post(),后数据应仅在控制器中处理。

您的控制器功能validate_credentials应这样重写:

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();
    }
}

和您的模型功能validate

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;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使资源重定向到Rails中的另一个控制器

来自分类Dev

如何在Rails上的ruby中重定向到另一个控制器动作

来自分类Dev

登录CodeIgniter 3将数据重定向到另一个控制器

来自分类Dev

如何从挂钩重定向到另一个控制器

来自分类Dev

在MVC控制器中重定向到另一个不起作用的控制器

来自分类Dev

AngularJS发布到控制器并重定向到另一个页面

来自分类Dev

当从任何控制器重定向到另一个控制器时,如何防止 Laravel 5.2 中的会话值丢失?

来自分类Dev

如何通过重定向URL将模型属性对象的值从一个控制器传递到另一个控制器

来自分类Dev

重定向到另一个视图后,MVC控制器再次调用

来自分类Dev

Rails重定向到另一个控制器的show方法

来自分类Dev

CakePHP重定向到另一个URL,但使用相同的控制器

来自分类Dev

MVC 5从BeginExecuteCore重定向到另一个控制器

来自分类Dev

MVC C#重定向到另一个控制器

来自分类Dev

调用控制器,但不立即重定向到另一个视图

来自分类Dev

使用Flash消息重定向到另一个控制器-Cakephp 3

来自分类Dev

错误:我的控制器将我重定向到另一个URL

来自分类Dev

重定向到另一个控制器

来自分类Dev

控制器操作 - 重定向到另一个模板

来自分类Dev

如何使用yii调用重定向到另一个控制器操作视图?

来自分类Dev

如何将注销和登录重定向到另一个控制器和操作

来自分类Dev

将错误消息下载或重定向到Spring Web MVC中的另一个控制器操作

来自分类Dev

如何在Codeigniter中将数组从一个类控制器传递到另一个

来自分类Dev

如何将用户从控制器重定向到另一个域

来自分类Dev

使用控制器中的参数重定向另一个动作

来自分类Dev

从一个控制器重定向到另一个

来自分类Dev

当两个控制器的动作名称相同时,从另一个控制器重定向到该控制器的动作

来自分类Dev

如何在Codeigniter中的另一个控制器中调用一个控制器功能

来自分类Dev

如何在Codeigniter中的另一个控制器中调用一个控制器功能

来自分类Dev

浏览器是否会重定向到对ajax请求的另一个控制器操作?

Related 相关文章

  1. 1

    如何使资源重定向到Rails中的另一个控制器

  2. 2

    如何在Rails上的ruby中重定向到另一个控制器动作

  3. 3

    登录CodeIgniter 3将数据重定向到另一个控制器

  4. 4

    如何从挂钩重定向到另一个控制器

  5. 5

    在MVC控制器中重定向到另一个不起作用的控制器

  6. 6

    AngularJS发布到控制器并重定向到另一个页面

  7. 7

    当从任何控制器重定向到另一个控制器时,如何防止 Laravel 5.2 中的会话值丢失?

  8. 8

    如何通过重定向URL将模型属性对象的值从一个控制器传递到另一个控制器

  9. 9

    重定向到另一个视图后,MVC控制器再次调用

  10. 10

    Rails重定向到另一个控制器的show方法

  11. 11

    CakePHP重定向到另一个URL,但使用相同的控制器

  12. 12

    MVC 5从BeginExecuteCore重定向到另一个控制器

  13. 13

    MVC C#重定向到另一个控制器

  14. 14

    调用控制器,但不立即重定向到另一个视图

  15. 15

    使用Flash消息重定向到另一个控制器-Cakephp 3

  16. 16

    错误:我的控制器将我重定向到另一个URL

  17. 17

    重定向到另一个控制器

  18. 18

    控制器操作 - 重定向到另一个模板

  19. 19

    如何使用yii调用重定向到另一个控制器操作视图?

  20. 20

    如何将注销和登录重定向到另一个控制器和操作

  21. 21

    将错误消息下载或重定向到Spring Web MVC中的另一个控制器操作

  22. 22

    如何在Codeigniter中将数组从一个类控制器传递到另一个

  23. 23

    如何将用户从控制器重定向到另一个域

  24. 24

    使用控制器中的参数重定向另一个动作

  25. 25

    从一个控制器重定向到另一个

  26. 26

    当两个控制器的动作名称相同时,从另一个控制器重定向到该控制器的动作

  27. 27

    如何在Codeigniter中的另一个控制器中调用一个控制器功能

  28. 28

    如何在Codeigniter中的另一个控制器中调用一个控制器功能

  29. 29

    浏览器是否会重定向到对ajax请求的另一个控制器操作?

热门标签

归档