繁体   English   中英

如果会话已过期,Codeigniter将重定向到登录页面

[英]Codeigniter redirect to login page if session already expires

我是codeigniter框架的新手,我不知道内置会话是如何工作的。 我想要的是,当会话到期时,用户将被重定向到登录页面。 我检查了谷歌和其他stackoverflow问题的答案,并尝试了他们的每个代码,但它不起作用。 在本机php会话中,我只需要指定如果会话在给定时间内到期然后重定向,但是当我在codeigniter中应用它时它不起作用。 我还不知道如何在config中检索会话到期值,以将其与用户在其记录的会话期间累积的当前时间进行比较。 请帮忙....

这在控制器中起作用

public function check_session()
{
    $logged_in = $this->session->userdata('logged_in');

    if(!$logged_in)
    {
        $this->logout();
    }
}

这是ajax:

setInterval(function(){
$.ajax({
    type: 'POST',
    url: "<?php echo site_url('tms/check_session');?>",
    success: function(data){
        console.log(data);
    }
});
},300);

首先,在application/core下创建一个核心Controller。 你可以称之为MY_Controller.php

以下是MY_Controller.php的示例:

class User_Controller extends CI_Controller {

    public function __construct()
    {

        parent::__construct();

        if ($this->session->userdata['logged'] == TRUE)
        {
            //do something
        }
        else
        {
            redirect('login'); //if session is not there, redirect to login page
        }   

    }
}

创建您的控制器类,如下所示:

class Someclass extends User_Controller

您还应该在会话数组中传递一个名为“logged”的值。 例如:

$session = array('id' => $id, 'logged' => TRUE);
$this->session->set_userdata($session);

现在,如果会话结束,系统会将用户重定向到登录页面。 如果你想通过JavaScript创建这个会话控件,你应该为它编写一些代码。 顺便说一句,我不是在暗示这一点。 您无需增加系统的工作量。 使用我的代码,如果会话在用户想要访问另一个页面时结束,系统会将他踢出去。

public function check_session()
{


    if(!$this->session->userdata['logged'])
    {
        redirect('someurl');
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM