2013-08-24 48 views
4

我想在codeigniter framework.my中设计一个登录/注销页面。我的问题是,当我注销web页面时,我正在重定向到登录页面。 当我回去我得到一个网页,其中说:在codeigniter中注销

文件过期

This document is no longer available. 

但是,当我刷新此页面我收到登录到系统再次(OO)

以下代码包含我的构造函数和注销功能。请帮我设计一个完美的登录注销页面

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

    $this->load->model('user_model');  

    $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, 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");  
} 

function logout() 
{ 
    $newdata = array(
       'user_name' =>'', 
       'user_email' => '', 
       'logged_in' => FALSE, 
       ); 

    $this->session->unset_userdata($newdata); 
    $this->session->sess_destroy(); 

    redirect('default_controller','refresh'); 
} 

我试过找到正确的注销方法,但我无法做到。

+0

嗯,你可以上传你的登录方法藏汉并给你的具体交互步骤一些细节(即表单提交 - >登录页(重定向? ) - >注销(重定向) - >历史后退 - >刷新)?所以基本上我很好奇你是否可能通过刷新来重复登录过程,在这种情况下,登录后的重定向应该有所帮助。 – Filou

+1

aahh,你在加载会话库吗?任何这样的错误可能因为重定向而被隐藏。 – Filou

+0

我是自动加载会话库 –

回答

15

尽量简单地这样

function logout() 
{ 
    $user_data = $this->session->all_userdata(); 
     foreach ($user_data as $key => $value) { 
      if ($key != 'session_id' && $key != 'ip_address' && $key != 'user_agent' && $key != 'last_activity') { 
       $this->session->unset_userdata($key); 
      } 
     } 
    $this->session->sess_destroy(); 
    redirect('default_controller'); 
} 
1

不需要使用这条线

$ this-> session-> sess_destroy();

+6

其实,这是* only *行需要... – Shomz

+0

我没有得到你..我仍然面临着与mylogout的问题 –

0
public function Logout() 
    { 
     $this->session->sess_destroy(); 
     redirect('login'); 
    } 
/** Here ('login') is controller class . 
In view ('logout-page'):-**/ 

<a href="home/logout">Logout</a> 
+0

需要一些格式和一些解释。 –