1

你好。我的会话有问题,我是 CodeIgniter 的新手,所以请耐心等待。这是我的索引函数:

function index()
{
    $username;
    $pWord; //assume these two variables has valid and correct value
    if($this->coreModel->authenticate($username, $pWord)){
        $user = $this->coreModel->authenticate($username, $pWord);
        foreach($user->result() as $key) {
                $this->session->set_userdata(array(
                                'logged_in' => TRUE,
                                'cl_UserId' => $key->cl_UserId,
                                'cl_username' => $key->cl_username,
                                'cl_roles' => $key->cl_roles));
                if($this->session->userdata('cl_roles') == 1){
                    header("Location: ".base_url()."controller/homepage");  
                } else {
                    $this->load->view('loginPage',$this->data);
                }
         }

    } else {                            
        //$this->data['msg'] = "Wrong Username/Password";
        $this->load->view('loginPage',$this->data);
    }
}
function kickIfNotInSession(){
    if ($this->session->userdata('logged_in') == FALSE)
    { 
       redirect('controller'); 
    }
}

如果我输入有效的用户名和密码,它可以正常工作,并且页面会转到主页。echo在我的主页上,我idusername. 同样在我的主页上,我有一个标签菜单。在所有页面中,我echo和. 我还在所有函数中添加了一个 kickIfNotInSession() 函数,例如:idusername

function test() {
    $userid = $this->session->userdata("logged_in");
    $this->kickIfNotInSession();
    $this->load->view("test");  
}

另外,我有autoload.php

$autoload['helper'] = array('url');
$autoload['libraries'] = array('database','session');

登录后,我单击了所有选项卡,由于某种原因它工作正常。id它与and相呼应username,但在一两分钟后,当我单击我的选项卡时,它会将我踢出会话并引导我进入登录页面。我想知道这是怎么发生的。我错过了什么吗?

4

3 回答 3

2

检查 application/config/config.php 文件中的 sess_expiration 参数。可能是设置不正确。

'sess_expiration' = 您希望会话持续的秒数。默认会话持续 7200 秒(两个小时)。设置为零表示没有过期。

于 2013-05-06T13:31:06.373 回答
1

听起来您的会话过期设置为非常低的值,几分钟后您就会被淘汰。

转到application/config/config.php,向下滚动并查找$config['sees_expiration']。这就是设置过期时间(以秒为单位)的原因。将其更改为适合您的任何内容,然后重试。

您还可以在此处查看 CodeIgniter 手册(在页面底部)。

sess_expiration - 您希望会话持续的秒数。默认值为 2 小时(7200 秒)。如果您想要一个未过期的会话,请将值设置为零:0

于 2013-05-06T18:01:36.713 回答
0

您应该增加会话到期时间。更改过期时间

  • 打开位于 path_to_project/application/config/config.php 的 CI 配置文件
  • 查找 $config['sees_expiration']
  • 现在增加过期时间,如 $config['sess_expiration'] = 14400;

注意:会话到期时间将以秒为单位考虑。

于 2014-05-25T15:53:22.590 回答