使用返回如下数组的用户模型:
$user_data['display_name'] = "John Doe";
$user_data['avatar'] = ./images/user144.jpg";
我使用$this->session->set_userdata('user_data',$user_data);
创建会话
现在,如果我在另一个控制器上让用户更改他的头像,
如何替换与之关联的会话变量?
比如$this->session->set_userdata('user_data["avatar"]',$new_avatar);
就是不能工作,对吧?
谢谢你的帮助..。
发布于 2009-10-15 02:46:53
纵观你的代码,我猜最好的方法就是取消设置数据并重置它。
使用$this->session->unset_userdata('thesessiontounset');,然后用新信息和旧信息重新设置它。
发布于 2009-11-22 22:57:07
session->set_userdata()函数一次只能让您修改一个密钥。在您的例子中,键引用了一个数组,所以您尝试做的事情以您尝试做的方式是不可能的。
当我更新我的会话时,我运行类似这样的东西。
//Create or setup the array of the fields you want to update.
$newFields = array('avatar' = > 'image01.png');
//Check to see if the session is currently populated.
if (!is_array($this->session->userdata('abc'))){
//...and if it's not - set it to a blank array
$this->session->set_userdata('abc',array());
}
//Retrieve the existing session data
$existing_session = $this->session->userdata('abc');
//Merge the existing data with the new data
$combined_data = array_merge($this->session->userdata('abc'), $newFields);
//update the session
$this->session->set_userdata('abc',$combined_data);
发布于 2010-01-29 17:26:00
第一个控制器
$user_data['display_name'] = "John Doe";
$user_data['avatar'] = "./images/user144.jpg";
$this->session->set_userdata('user_data',$user_data);
第二个控制器
$user_data = $this->session->userdata('user_data');
$user_data['avatar'] = $new_avatar;
$this->session->set_userdata('user_data', $new_avatar);
https://stackoverflow.com/questions/1570013
复制相似问题