2016-11-17 98 views
0

我正在與一個核心php網站集成的codeigniter網站上工作。問題是當我註銷會話沒有被破壞或未設置,如果用戶點擊返回按鈕,他/她可以回到內部頁面,也不允許其他用戶登錄,因爲會話已經在運行。會話在註銷時不會被破壞?

我已經嘗試使用corephp unsetting和銷燬會話,但沒有運氣,請建議一些東西。

這是我的註銷代碼

 function logout() 
    { 
    session_start(); 

    $this->session->set_userdata('user_id',''); 
    $this->session->set_userdata('user_name',''); 
    $this->session->set_userdata('business_id',''); 
    $this->session->set_userdata('email',''); 
    $this->session->set_userdata('user_type',''); 
    $this->session->set_userdata('activation_status',''); 
    unset($_SESSION); 
    $this->session->sess_destroy(); 
     session_destroy(); 
    header('location:'.base_url().'Login'); 


    } 

編輯:它適用於私人瀏覽器,但不是在正常的

+1

($ _ SESSION)'嘗試打印'$ this-> session'。它顯示什麼? –

+0

我不知道codeigniter中的確切函數銷燬會話是什麼,但我認爲這很好: - 'function logout(){this-> session-> sess_destroy(); session_destroy(); header('location:'。base_url()。'Login');}' –

+1

您只需要'$ this-> session-> sess_destroy();'註釋掉所有剩下的部分,看看它是否有效,也不需要'session_start()'。 – Blinkydamo

回答

0

使用笨會話庫應該是這麼簡單

function logout(){ 
    $this->session->sess_destroy(); 
    redirect('/'); 
} 

確保您已將會話庫加載到此控制器中(或自動加載)

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

此外,而不是在您的會話設置空白用戶數據,你可以取消設置個別項目在會話這樣

$this->session->unset_userdata('user_id'); 
+0

試過了也不行的 –

0

試試這個

$array = ('user_id', 'user_name', 'business_id', 'email', 'user_type', 'activation_status'); 
    $this->session->unset_userdata($array); 
+0

試過了,越來越也從主要的核心PHP網站,這就是爲什麼我申請,但不工作 –

+0

你需要打印$ this->會話對象,並檢查。您可能會在重定向頁面上創建另一個會話。 –

+0

它給出了一個通知未定義的變量:_SESSION,但如果我繼續上一頁,數據仍會顯示在會話 –

2
Try something like this 

$data = array(
'user_id' => '', 
'user_name' => '', 
'business_id' => '', 
'email' => '', 
'user_type' => '', 
'activation_status' => '',  
); 

$this->session->set_userdata('my_session',$data); 

To Destroy Session 

$this->session->sess_destroy('my_session'); 
之前`沒有設置
+0

感謝哥們,它的工作:) – Prabhakar

+0

請解釋它是如何不同於我在上面做什麼? –