2016-03-25 65 views
-1

我只需要20分鐘。對於這一目的,我使用到TempData在笨笨:會議TempData的是在會話中刪除破壞

在頁面上顯示的一些數據其實TempData的是會話數據,我將其標記爲使用mark_as_temp方法

一個TempData的下面是我的代碼

public function final_result() 
    { 
    //make the session data as tempdata  
     $this->session->mark_as_temp(
      array('hotel_basic','user_ht_bk_data','hotel_info','hotel_search_query','booking_response','ht_star_rating','each_rooms'),1200  
     );  
     //after marking as tempdata destroy the original sessiondata 
     $this->session->sess_destroy(); 
    //read from the tempdata 
     $data['result']=$this->session->tempdata('user_ht_bk_data'); 

     $this->view('final-view',$data); 
    } 

$data['result']將返回空值。

根據codeigniter文檔sess_destroy()永遠不要刪除tempdata。

但在我的情況下,tempdata執行session_destroy

+0

哪個版本你使用 - 當前文檔中表示:值到期後,或會話過期或被刪除,該值被自動刪除。 看@:https://www.codeigniter.com/user_guide/libraries/sessions.html#tempdata 所以如果你銷燬會話的價值將被刪除 – sintakonte

+0

CI版本3.0.3 –

+0

@shammon啊你是運行PHP 7 ? – MackieeE

回答

-1

這是因爲數據被作爲TempData的必須在會議上已經退出預先設定時被刪除。作爲stated in the documentation你需要嘗試類似:

$_SESSION['user_ht_bk_data'] = 'Test string'; // Or use set_tempdata with $this->session->set_tempdata('user_ht_bk_data', 'Test string', 300); 
$this->session->mark_as_temp('user_ht_bk_data', 1200); // No need to use this if you used set_tempdata(); 
$this->session->sess_destroy(); 
$data['result']=$this->session->tempdata('user_ht_bk_data'); 
+0

同樣的事情是我使用的唯一區別是'mark_as_temp'中的一個參數是一個數組 –

+0

我看不到您的代碼添加會話數據。請發佈所有相關代碼,其他地方可能會有影響。 – Technoh

1

一旦使用sess_destroy(),所有的會話數據(包括flashdata和TempData的)將永久破壞和相同的請求過程中的功能將不可用在銷燬會話後,您可以使用

Destroying a Session In Codeigniter

解決方案

  1. 顯示最終結果爲平常(在無會話銷燬),並 countdown with JavaScript在20個薄荷糖破壞會議。
  2. Use cookies
+0

好吧那麼我該如何解決我的問題 –

+0

@shammon檢查回答 –

+0

讓我試試:) –