Codeigniter注销问题


Codeigniter logout issue

当我试图注销我创建的会话时,我不断收到修改头错误。。这是我的代码

   function logout()
 {
   $this->session->unset_userdata('logged_in');
   session_destroy();
   redirect('home', 'refresh');
 }

以下是错误:

A PHP Error was encountered
Severity: Warning
Message: Cannot modify header information - headers already sent by (output started at /Users/Rob/stage/dashboard.php:36)
Filename: libraries/Session.php
Line Number: 688
A PHP Error was encountered
Severity: Warning
Message: Cannot modify header information - headers already sent by (output started at /Users/Rob/stage/dashboard.php:36)
Filename: helpers/url_helper.php
Line Number: 540

有什么想法会导致这种情况吗?

这是我的整个控制器的代码。

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
session_start(); //we need to call PHP's session object to access it through CI
class dashboard extends CI_Controller {
 function __construct()
 {
   parent::__construct();
 }
 function index()
 {
   if($this->session->userdata('logged_in'))
   {
     $session_data = $this->session->userdata('logged_in');
     $data['username'] = $session_data['username'];
     $this->load->view('dashboard', $data);
   }
   else
   {
     //If no session, redirect to login page
     redirect('login', 'refresh');
   }
 }
 function logout()
 {
   $this->session->unset_userdata('logged_in');
   session_destroy();
   redirect('home', 'refresh');
 }
}
?>

我基本上只是把用户登录到一个视图中,然后在该页面上有一个注销链接,当他们点击它时,他们就会从会话中注销,然后运行注销功能。有什么想法吗?

这个答案很可能会解决您的问题。

然而,由于我无法发表评论,我想指出的是,如果你要破坏会话,你不需要先取消设置它的任何部分。因此可以更改以下

 $this->session->unset_userdata('logged_in');
 session_destroy();

到此:

 $this->session->sess_destroy();

也要添加,请使用

$this->session->sess_destroy();

而不是CCD_ 1。