是否可以在codeigniter routes.php文件中使用session?

时间:2016-01-07 00:38:10

标签: php ajax codeigniter session

我在codeigniter中的url路由中遇到了一些问题。我的登录控制器加载登录视图文件以获取用户输入,我使用的是ajax登录,只返回base_url。我在routes.php中使用另一个控制器而不是登录控制器,因此ajax返回无法将我重定向到管理仪表板。 在我的登录控制器中,索引功能是:

 public function index() {
     if ($this->session->userdata('admin_login') == 1)
        redirect(base_url() . 'index.php?admin/dashboard', 'refresh');
     if ($this->session->userdata('teacher_login') == 1)
        redirect(base_url() . 'index.php?teacher/dashboard', 'refresh');
    if ($this->session->userdata('student_login') == 1)
         redirect(base_url() . 'index.php?student/dashboard', 'refresh');
    if ($this->session->userdata('parent_login') == 1)
        redirect(base_url() . 'index.php?parents/dashboard', 'refresh');
    $this->load->view('backend/login');
}

这里我正在使用会话检查管理员和其他用户的凭据,以将其重定向到他们的特定仪表板。

和我的login.php视图文件我正在尝试使用它:

 <?php 
    $data['page'] = 'login';
    $this->session->set_userdata($data);
 ?>

然后在routes.php中我试图让seeion varable重定向右控制器。

    $CI =& get_instance();
     if( $CI->session->userdata('page') ){
     redirect(base_url().'login/');
    }

    $route['default_controller'] =   'Frontend';
    $route['404_override'] = '';
    $route['translate_uri_dashes'] = FALSE;

我不知道为什么它不像我预期的那样工作。 请告诉我应该怎么做。 任何帮助将非常感谢。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

使用以下编码

$config['enable_hooks'] = TRUE;

在钩子文件夹

中创建一个文件(check_session.php)
class Check_Session extends CI_Controller{


function CheckSession(){

     if( $this->session->userdata('page') ){
     redirect(base_url().'login/');
    }
        }
}

并在config文件夹中的hook.php中应用以下编码

$hook['pre_controller']     = array(
                                'class'    => 'Check_Session',
                                'function' => 'CheckSession',
                                'filename' => 'check_session.php',
                                'filepath' => 'hooks',
                                'params'   => ''
                             );

如果您有任何疑问,请随意询问....