2014-04-09 33 views
0

在我的註銷功能我想摧毀,除了一個 這裏所有的會議是我的功能:摧毀,並在相同功能創建會話

public function out(){ 

    $ref = $this->session->userdata('ref'); 
    var_dump($ref); 

    $this->session->sess_destroy(); 

    $this->session->set_userdata('ref', $ref); 


    $ref = $this->session->userdata('ref'); 
    echo '---------------------------------------<br />'; 
    var_dump($ref); 


    } 

但這並不工作,並銷燬所有的會話甚至ref當我檢查ref在接下來的頁面,我得到null

客棧的功能頁面我得到這個輸出:

array (size=2) 
    'val' => int 666 
    'date' => int 1397060477 

--------------------------------------- 

array (size=2) 
    'val' => int 666 
    'date' => int 1397060477 

A PHP Error was encountered 

Severity: Notice 

Message: Undefined index: last_activity 

Filename: drivers/Session_cookie.php 

Line Number: 590 

Backtrace: 

A PHP Error was encountered 

Severity: Notice 

Message: Undefined index: session_id 

Filename: drivers/Session_cookie.php 

Line Number: 611 

Backtrace: 

即時通訊使用3.0-dev

+0

破壞它後無法寫入會話。你需要創建一個新的。 –

回答

3

試試這個:

public function out(){ 

    $ref = $this->session->userdata('ref'); 
    $this->session->sess_destroy(); // this kills the ID/cookie 

    $this->session->sess_create(); // properly start a new session with new ID/cookie 

    if($ref)   
    $this->session->set_userdata('ref', $ref); 

    redirect(base_url().'index'); 

} 

注:

sess_create()沒有記錄在這裏:CodeIgniter Sessions

你要看看/system/libraries/Session.php找到sess_create()

UPDATE

當使用開發3.0,那麼你需要這樣做:

$this->session->__construct(); 
+0

thanx,我已經添加了更多的信息.​​... btw我得到了'調用未定義的方法CI_Session :: sess_create()' – max

+0

我使用CI 2.1.4,所以你需要在我引用的文件中搜索。 – MonkeyZeus

+0

聖球現在有點不同了:** [CI 3.0 Session.php](https://github.com/EllisLab/CodeIgniter/blob/release/3.0/system/libraries/Session/Session.php)**。嘗試'$ this-> session - > __ construct();'而不是'sess_create()' – MonkeyZeus

-1

會話被銷燬但在銷燬後不會被重新創建。也許你的會話類應該在構造函數中的session_start

-1

你摧毀一個會話之後,我相信這將是該行:

$this->session->sess_destroy(); 

你有沒有會話可言,所以你不能把任何東西到它。

您首先將會話變量存儲在變量$ ref中,然後您銷燬整個會話,並再次嘗試將某些內容放入會話中。所以在銷燬之後,你必須開始另一個會話。事情是這樣的:

public function out(){ 

$ref = $this->session->userdata('ref'); 
$this->session->sess_destroy(); 
session_start(); // put ur session_start func here 
if($ref)   
$this->session->set_userdata('ref', $ref); 

redirect(base_url().'index'); 

} 
0

感謝名單球員,我已經destroyin之後manully加載會話libe在功能解決它......即使雖然我自動加載sess庫!

我想他們永遠不會解決sess lib問題!

public function out(){ 

$ref = $this->session->userdata('ref'); 
$this->session->sess_destroy(); 

$this->load->library('session'); 
$this->session->set_userdata('ref', $ref); 

redirect(base_url().'index'); 

}