在codeigniter

时间:2016-08-01 04:29:22

标签: php codeigniter

在我的codeigniter登录控制器上,我有以下代码

$session_userdata_token = $this->session->userdata('token');
$input_token = $this->uri->segment(2);

if (!isset($session_userdata_token) && isset($input_token)) {
  $this->error['warning'] = 'Your session has expired!';
}

如果会话过期,它会重定向到登录控制器,并在URL中使用令牌,如

http://localhost/cookie/login/0cY9WNUvodIhBrJi

然后警告消息将显示OK。但是一旦消息显示并且我重新加载页面,我希望消息清除即使URL中的令牌。

  

我的问题一旦显示警告消息,然后重新加载   页面如何使用上面的代码清除消息?

     

请注意:不要使用flashdata,因为在使用$config['sess_driver'] = 'files';时会在codeigniter 3版本中创建额外的文件

2 个答案:

答案 0 :(得分:0)

您可以使用jquery set timeout功能删除警告消息。让消息显示所需的秒数,然后将其删除。

答案 1 :(得分:0)

CI有:

$this->session->set_flashdata('somename','data');

你可以通过

使用它
echo $this->session->flashdata('somename');

重定向后,Flash数据始终会被清除。

你可以使用tempdata:

$this->session->set_tempdata('success', 'Message', 10); # 10 means secods
echo $this->session->tempdata('success');

10秒后它将被删除

您可以使用HTML5浏览器存储:

如果你想从控制器设置它,你可以使用:

echo "<script> localStorage.setItem('bgcolor', 'red')</script>";

设置:

 localStorage.setItem('bgcolor', 'red');

获得:

 localStorage.getItem('bgcolor');

删除:

localStorage.removeItem("lastname");