我需要在页面上显示一些数据只有20分钟。为此,我在codeigniter中使用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 :(得分:1)
使用
sess_destroy()
后,所有会话数据( 包括flashdata和tempdata )将被永久销毁,并且在此期间功能将无法使用在销毁会话后请求。
Destroying a Session In Codeigniter
<强>解决方案强>
答案 1 :(得分:-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');