Php CodeIgniter会话中的用户_数据用于什么?
当我在CodeIgniter中运行Php CodeIgniter会话中的用户_数据用于什么?,php,codeigniter,session,session-variables,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 (compat
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\u data”=>username覆盖user\u数据索引
如果CI不断更新此索引,则此操作将不起作用。然后我必须用自己的索引存储会话数据。任何有CI经验的人都知道会话数组中的固定索引用于什么。没有相关文档。用户数据字段用于所有额外的会话参数
一旦您想要放置一个会话值,您就可以使用它来执行以下操作:
$this->session->set_userdata('x','y');
然后将userdata('x')
以y
值存储在会话的user\u data
数组键中
因此,您的user\u数据
key in session now将如下所示(或类似的内容:D):
因此,可以肯定的是,您将覆盖用户_数据的值,只需设置一些您需要/想要的会话值
关于文档中的user_数据字段的更多信息似乎是CI用于存储会话参数的db字段:
在system7libraries/session.php中,没有大的user\u数据痕迹
,只针对以下几行:
// 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\u data
的数据库字段,该字段(似乎)与会话数据库相关,而不是与我相关。我得到'session_id'=>string'cc8df0989ae26188260d184f6e40ea7e'(长度=32)'ip_address'=>string'127.0.0.0.1'(长度=9)'user_agent'=>string'Mozilla/5.0(windowsnt 6.1)AppleWebKit/537.31(KHTML,像Gecko)Chrome/26.0.1410.43 Safari/537.31'(长度=101)'last_activity'=>int 5457537'user_data'=>string(长度=0)'x'=>string'y'(长度=1)@VidarVestnes可能这是一个CI,它需要保持原样,我需要在我自己的秒上测试它,我告诉你;)@VidarVestnes很奇怪,实际上我没有用户数据索引,您是否尝试过破坏会话并重新创建会话?这不是您自己的会话参数,对吗DNope,如您在systems文件夹下的Session.php中所见。在靠近第321行的地方,它使用了一个索引为user_data的数组,并将其保存到db和cookie中。。。但我明白你的意思:-)CI总是存储/创建这个index@VidarVestnes这似乎很正常,但事实是它设置为字符串anywy留给我一个dubt,文档将用户数据显示为一个db字段(存储在会话中)。无论如何,您留给我一个dubt大多数人都不需要直接修改此列。您应该使用添加或删除会话数据。
// 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));