嗨。我的会话有问题,我是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
、id
和username
。同样在我的主页上,我有一个选项卡菜单。在所有页面中,I echo
、id
和username
。我还在所有函数中添加了kickIfNotInSession((函数,例如:
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
和username
相呼应,但一两分钟后,当我单击选项卡时,它会将我踢出会话,并将我引导到登录页面。我想知道这是怎么发生的。我是不是错过了什么?
检查application/config/config.php文件中的sess_expiration参数。可能是设置不正确。
'sess_expiration'=希望会话持续的秒数。默认情况下,会话持续7200秒(两小时(。设置为零表示无过期。
听起来你的会话经验值设置得很低,几分钟后就会把你赶出去。
转到application/config/config.php
,向下滚动并查找$config['sees_expiration']
。这就是设置过期时间(以秒为单位(的原因。将其更改为适合您的内容,然后重试。
您也可以在此处查看CodeIgniter手册(位于页面底部(。
sess_expiration-您想要的秒数会话结束。默认值为2小时(7200秒(。如果你希望非过期会话将值设置为零:0
您应该增加会话到期时间。更改到期时间
- 打开位于path_to_project/application/config/config.php的CI配置文件
- 查找$config['sees_expiration']
- 现在增加到期时间,如$config['sess_expiration']=14400
注意:会话到期时间将以秒为单位。