簡體   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