【问题标题】:What is user_data in CodeIgniter session used to?CodeIgniter 会话中的 user_data 是用来做什么的?
【发布时间】:2013-04-08 21:29:09
【问题描述】:

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

【问题讨论】:

  • 大多数人永远不需要直接修改此列。您应该使用methods available to you 添加或删除会话数据。

标签: php codeigniter session session-variables


【解决方案1】:

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

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

【讨论】:

  • 不在我身边。我得到 'session_id' => string 'cc8df0989ae26188260d184f6e40ea7e' (length=32) 'ip_address' => string '127.0.0.1' (length=9) 'user_agent' => string 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.31 (KHTML, 像 Gecko) Chrome/26.0.1410.43 Safari/537.31' (length=101) 'last_activity' => int 1365457537 'user_data' => string '' (length=0) 'x' => string 'y' (长度=1)
  • @VidarVestnes 可能是 CI 需要保持原样,我需要自己测试一下,我告诉你 ;)
  • @VidarVestnes 太奇怪了,实际上我没有 user_data 索引,您是否尝试过销毁会话并重新创建会话?这不是您自己的会话参数吗? :D
  • 不,您可以在系统文件夹下的 Session.php 中看到。在接近第 321 行的某个地方,它使用了一个索引 = user_data 的数组,并将其保存到 db 和 cookie 中……但我明白你的意思 :-) CI,总是存储/创建这个索引
  • @VidarVestnes 这似乎很正常,但事实上它将它设置为字符串无论如何给我留下了一个疑问,文档将 user_data 显示为数据库字段ellislab.com/codeigniter/user-guide/libraries/sessions.html(其中存储了您的会话)你反正给我留个名,嗯
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-17
  • 1970-01-01
相关资源
最近更新 更多