当我在CodeIgniter中运行var_dump($this->session->all_userdata());
时,它会打印
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索引,例如'user_data'=> $用户名。
如果CI不断更新此索引,则无效。比我必须用我自己的索引存储我的会话数据。任何具有CI经验的人都知道会话数组中的这个固定索引用于什么。它没有文档。
答案 0 :(得分:3)
user_data
字段用于所有额外会话参数
一旦你想要设置你用来做的会话值:
$this->session->set_userdata('x','y');
然后userdata('x')
存储在会话的user_data
数组键中,并带有y
值
所以现在会话中的user_data
密钥看起来像(或者类似的东西:D):
'user_data' => ['x'=>'y']
所以肯定,是的,你将覆盖user_data的值,只需设置你需要/想要的一些会话值
更多关于doc中的user_data字段似乎是CI用于存储会话参数的db字段: 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
的数据库字段,它似乎与会话数据库相关