CodeIgniter会话中的user_data用于什么?

时间:2013-04-08 21:29:10

标签: php codeigniter session session-variables

当我在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经验的人都知道会话数组中的这个固定索引用于什么。它没有文档。

1 个答案:

答案 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的数据库字段,它似乎与会话数据库相关