2016-09-28 117 views
0

创建了一个简单的会话页面,即使从页面注销后,我仍然可以访问登录页面。 我也销毁了所有会话,但仍找不到任何解决方案。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> 
?> 

回答

1

令人不安的CI中的会话非常简单,看起来像这样。

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

对于单数据:

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

对于数据单项的数组:

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

对于破坏会话:

$this->session->sess_destroy(); 
0

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

例如,当用户使用正确的凭据登录时,url应如下所示:本地主机/应用程序/控制器/功能(例如)。稍后当用户注销时,您将重定向回登录页面。但是如果我们在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 
    } 
    } 
} 

我希望这有助于有人..欢呼声..

+0

仍然没有工作 –

+0

你能一次请检查会话变量是否设置正确与否?只需在登录后回显所有会话变量。 –

+0

是的会话变量已设置。但直到现在还找不到任何解决方案。 –