php - 如果 session 已过期,Codeigniter 重定向到登录页面

标签 php codeigniter session

我是 codeigniter 框架的新手,我不太了解内置 session 是如何工作的。我想要的是,当 session 过期时,用户将被重定向到登录页面。我检查了 google 和其他 stackoverflow 问题的答案,并尝试了其中的每个代码,但它不起作用。在 native php session 中,我只需要指定如果 session 在给定时间内过期则重定向,但是当我在 codeigniter 中应用它时它不起作用。我也不知道如何在配置中检索 session 过期值以将其与用户在他/她的登录 session 期间累积的当前时间进行比较。请帮忙....

这是在 Controller 中的功能

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
        }   

    }
}

像下面这样创建你的 Controller 类:

class Someclass extends User_Controller

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

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

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

public function check_session()
{


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

关于php - 如果 session 已过期,Codeigniter 重定向到登录页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37084902/

相关文章:

php - Codeigniter 和多重继承?

java - 如何设置 session 超时,使其永不过期?

php - 从查询创建数组?

php - 如何将foreach循环生成的变量传递给PHP中的另一个页面

php - 随机字符串代码点火器

session - Flash 消息需要 session

session - Windows Azure SDK - ASPProviders 示例

PHP 换行符 (\n) 不工作

php - 联系表上的个性化感谢信息

php - Docker:PHP启动:无法加载动态库 'pgsql'