我剛開始與CI,並有一些我不明白。 我在寫這個登錄頁面,我想將用戶對象添加到會話中。我怎麼做?用戶對象來自我的用戶模型.. 對於一個新實例,我寫:會話中的Codeigniter對象?
$this->load->model('user_model', 'user');
,但是這是行不通的:
$this->session->set_userdata('userobject', $this->user);
任何想法如何做到這一點?
我剛開始與CI,並有一些我不明白。 我在寫這個登錄頁面,我想將用戶對象添加到會話中。我怎麼做?用戶對象來自我的用戶模型.. 對於一個新實例,我寫:會話中的Codeigniter對象?
$this->load->model('user_model', 'user');
,但是這是行不通的:
$this->session->set_userdata('userobject', $this->user);
任何想法如何做到這一點?
在用戶模式創建一個函數用於檢索您要添加到會話的用戶數據:
function get_user_data($id){
//example query
$query = $this->db->get_where('mytable', array('id' => $id));
//might wanna check the data more than this but...
if ($query->num_rows() > 0){
return $query->row_array();
}
else{
return false;
}
}
在控制器:
$this->load->model('user_model', 'user');
$user_data = $this->user->get_user_data($id);
if(!empty($user_data)){
$this->session->set_userdata($user_data);
}
我甚至沒有想過使用數組,我正在考慮從我的課程中獲得一個實例。謝謝。 – networkprofile 2010-09-08 13:59:41
只保存數據=你不能使用對象的功能。 – twnaing 2011-11-17 10:14:00
什麼序列化模型;-)
$this->session->set_userdata('userobject', serialize($this->user));
,然後在提取時將其反序列化。但是,要注意CI會話,它不使用本地PHP會話,它使用了有限的cookie大小。
避免在會話中存儲任何模型對象(主要是由於加載原因)通常是一種很好的做法。另一個問題是,當用戶訪問一個頁面時,你幾乎總是想檢查它們是否被禁止或在另一個標籤中更新:)我通常只存儲用戶的ID並在每個頁面上查詢數據庫。 – 2010-09-04 18:54:06
爲什麼你需要同一個模型的兩個實例? – leonardys 2010-09-04 20:41:55
所以我可以比較這些對象將是一個例子...我想添加對象的會話,這是更實用的艾莫,但如果我找不到如何做到這一點,我會去用userid – networkprofile 2010-09-04 21:43:50