3

当我在 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' => $username。

如果 CI 不断更新这个索引,这将不起作用。比我必须用我自己的索引来存储我的会话数据。任何有 CI 经验的人都知道会话数组中的这个固定索引的用途。没有它的文档。

4

1 回答 1

3

user_data字段用于所有额外的会话参数

一旦你想放置一个你用来做的会话值:

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

然后将值userdata('x')存储在user_data会话的数组键中y

所以你user_data现在在会话中的键看起来像(或类似的东西:D):

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

所以绝对,是的,你将覆盖 user_data 的值,只需设置一些你需要/想要的会话值

文档中有关 user_data 字段的更多信息似乎是 CI 用于存储会话参数的 db 字段:http: //ellislab.com/codeigniter/user-guide/libraries/sessions.html

user_data在 system7libraries/session.php 中,仅针对这些行没有大的痕迹:

// 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_datawhich (似乎) 与会话数据库相关的数据库字段

于 2013-04-08T21:31:03.160 回答