codeigniter - 注销后仍然工作的后退按钮

时间:2016-09-28 09:39:58

标签: php codeigniter

创建了一个简单的会话页面,即使从页面注销后我仍然可以访问登录页面。 我还销毁了所有会议但仍无法找到任何解决方案。

查看 - flashdata_home.php

<form action='add' method='post'>

     <input type ='text' name='value'/>
     <input type='submit' value='Enter ' />

</form>

控制器 - FlashData_Controller.php

<?php

class FlashData_Controller Extends CI_Controller {


    function __construct() {
        parent::__construct();

        $this->load->library('session');
        $this->load->helper('url');

    }

    public function index(){
         $this->load->view('flashdata_home');
    }

    public function add(){
    // adding flash data 
    //$this->session->set_flashdata('item','This is me');

    $this->session->set_userdata('Name',$this->input->post('value'));

    //redirect to home page
    //  redirect('flashdata');

    if($this->session->has_userdata('Name')){

        $data = array('value' => $this->session->Name);
        $this->load->view('adminflashdata_home',$data);
    }
    else
    {
        $this->load->view('flashdata_home');
    }
   }

    public function logout(){

        $this->session->unset_userdata('Name');
        $this->session->sess_destroy('Name');
        $this->load->view('flashdata_home');

    }

}

查看 - adminflashdata_home.php

<?php 
echo $value;
<li><a href="logout">Logout</a></li>
?> 

2 个答案:

答案 0 :(得分:1)

在CI中解开会话非常简单,看起来像这样。

在您的代码中,您已取消设置数据,但您必须像我一样取消设置变量。

对于单个数据:

$this->session->unset_userdata('some_name');

数据阵列:

$array_items = array('username' => '', 'email' => '');
$this->session->unset_userdata($array_items);

用于销毁会话:

$this->session->sess_destroy();

答案 1 :(得分:0)

我认为你的问题是,虽然我们销毁会话,但我们仍然可以访问只有在用户登录时才应该加载的页面。

例如,当用户使用正确的凭据登录时,url应如下所示:localhost / app / controller / function(仅作为示例)。稍后当用户注销时,您将重定向回登录页面。但是如果我们在url中键入localhost / app / controller / function,或者如果我们在浏览器中单击后退按钮,浏览器将加载页面!我认为你陈述的问题是这样的。

对于这个问题,我总是在控制器的每个功能中使用一个解决方案。等;

class MainController extends CI_Controller {
  function test {
    $user_name = $this->session->userdata('user_name');
    if(isset($user_name)) {
      //the actual function code goes here
    }
    else {
      //redirect to the login function
    }
  }
}

我希望这能帮助一些人......欢呼..