2013-04-08 285 views
3

當我笨運行var_dump($this->session->all_userdata());它打印CodeIgniter會話中的user_data用於什麼?

array (size=5) 
    'session_id' => string '3403084ad9f5e2582a8d9269ceb68fb7' (length=32) 
    'ip_address' => string '127.0.0.1' (length=9) 
    'user_agent' => string 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)' (length=64) 
    'last_activity' => int 1365456079 
    'user_data' => string '' (length=0) 

由於這些自動CI填入值,我不知道我是否能/應該覆蓋中的用戶數據索引,如與「USER_DATA」 => $用戶名。

如果CI保持更新此索引,這將不起作用。比我必須存儲我的會話數據與我自己的索引。任何有CI經驗的人都知道會話數組中的固定索引用於什麼。沒有它的文檔。

+0

大多數人將永遠不需要直接修改此列。您應該使用[可用的方法]添加或刪除會話數據(http://ellislab.com/codeigniter/user-guide/libraries/sessions.html)。 – 2013-04-08 22:06:36

+0

+1有趣的事 – sbaaaang 2013-04-08 22:15:31

回答

3

user_data字段用於所有的額外會議PARAMS

一度想要把會話值你所使用的:

$this->session->set_userdata('x','y'); 

userdata('x')然後存儲在的user_data陣列關鍵與y會話價值

所以你的user_data鍵會話現在看起來像(或somenthing相似:D):

'user_data' => ['x'=>'y'] 

所以肯定,是的,你將覆蓋USER_DATA的價值,只設置你需要/想

更多關於USER_DATA字段從文檔似乎是數據庫領域的一些會議值CI用途存儲您的會話PARAMS: http://ellislab.com/codeigniter/user-guide/libraries/sessions.html

在system7libraries

/session.php文件存在的user_data只是這些線路沒有大痕跡:

// Run the update query 
     $this->CI->db->where('session_id', $this->userdata['session_id']); 
     $this->CI->db->update($this->sess_table_name, array('last_activity' => $this->userdata['last_activity'], 'user_data' => $custom_userdata)); 

看起來正在更新一個名爲user_data的數據庫字段,它似乎與會話數據庫相關聯

+0

不適合我。我得到 'SESSION_ID'=>字符串 'cc8df0989ae26188260d184f6e40ea7e'(長度= 32) 'IP_ADDRESS'=>字符串 '127.0.0.1'(長度= 9) 'USER_AGENT'=>字符串「的Mozilla/5.0(Windows NT的6.1)爲AppleWebKit/537.31(KHTML,例如Gecko)鉻/ 26.0.1410.43 Safari瀏覽器/ 537.31' (長度= 101) 'last_activity'=> INT 1365457537 '的user_data'=>字符串 ''(長度= 0) 'X'= >字符串'y'(長度= 1) – 2013-04-08 21:47:19

+0

我得到一個新的索引'x',你可以看到,但user_data仍然是一個空字符串... – 2013-04-08 21:48:10

+0

@VidarVestnes可能它是一個CI需要它,因爲它,我需要測試它在我自己秒我告訴你;) – sbaaaang 2013-04-08 21:50:11