如何销毁会话以便用户无法返回上一页并且无法直接在codeigniter中访问该页面?

时间:2017-02-21 05:57:09

标签: php codeigniter session

我正在尝试在我的代码中使用会话进行登录和注销,但是我的浏览器会保存正在传递的数据,如果我输入这样的“localhost / P_Display / user / Dashboard /”网址,我可以直接访问该页面我甚至可以在注销后直接访问此页面,这意味着会话没有被彻底销毁? 这是我的代码

 public function logout() 
  {

  $this->session->unset_userdata('user_id');
    $this->session->sess_destroy();

 return redirect('user','refresh');
  }

这是检查用户登录的部分..

现在注销

render()

如何阻止用户在注销后访问任何内容?

4 个答案:

答案 0 :(得分:0)

在视图文件中尝试此操作

<?php

header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
?>

或者.htaccess             FileETag无        标题未设置ETag        标题集Cache-Control&#34; max-age = 0,no-cache,no-store,must-revalidate&#34;        标题设置Pragma&#34; no-cache&#34;        Header set Expires&#34; Wed,11 Jan 1984 05:00:00 GMT&#34;     

或者 在控制器的__construct函数中

$this->output->set_header('Last-Modified: ' . gmdate("D, d M Y H:i:s") . ' GMT');('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
$this->output->set_header('Pragma: no-cache');
$this->output->set_header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

或HTML格式

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />

了解更多 访问 How to control web page caching, across all browsers?

答案 1 :(得分:0)

我认为您可以在仪表板控制器的构造函数中检查会话。 如果未设置会话,则将用户重定向到登录页面,如...

class Dashboard extends CI_Controller {
    public function __construct()
    {
        if(!isset($this->session->userdata['user_id']))
        {
            redirect('user','refresh');
        }
    }
    .....
}  

如果用户未登录,这将重定向到用户(应该是登录)控制器。

答案 2 :(得分:0)

当我对登录部分和控制访问进行编码时,我用来控制每个函数的userdata会话。这意味着每个函数都以如下内容开头:

{{1}}

例如。

我没有设法在构造函数或其他中使用它。

答案 3 :(得分:0)

将以下代码放在所有需要登录的控制器的__construct函数中

$this->output->set_header('Last-Modified:' . gmdate('D, d M Y H:i:s') . 'GMT');
$this->output->set_header('Cache-Control: no-store, no-cache, must-revalidate');
$this->output->set_header('Cache-Control: post-check=0, pre-check=0', false);
$this->output->set_header('Pragma: no-cache');

单击浏览器的后退按钮后,此页面将无法打开。