我几乎很尴尬地问,因为它看起来很简单,但我不能让它更新。
当用户登录时,我像array('users'=>array('timezone'=>'America/los Angeles'));一样设置会话变量
然后,我可以按如下方式检索数据:$_SESSION['users']['timezone']
它工作得很好。
但是,在用户配置文件页面中,用户可以更改他们的时区,当我尝试按如下方式更新$_SESSION时,它不起作用:
$_SESSION['users']['timezone'] = 'America/Denver';
我做错了什么?
-请求的更多代码
我发现会话变量是由类中的函数设置的
下面是函数:
function session_var_register($object_name, $var_value)
{
$_SESSION[$object_name]=$var_value;
}下面是该函数的调用方式:
$gf->session_var_register("users", $user_array)用户数组看起来像array('users'=>array('timezone'=>'America/los Angeles'));
我不明白这为什么行不通。不过,我可以绕过函数调用,只需创建如下数组即可解决此问题:
$_SESSION['users'] = $user_array;但是出于知识的原因,如果有人来看这篇文章,有没有人能解释一下这个函数有什么不同?没有抛出错误,只是不允许我在通过function...almost注册会话变量后将任何内容赋给它,就像它在实例化后变成了read_only一样。
发布于 2012-06-07 09:03:37
在这段代码之后,你会立即进行重定向吗?
在执行重定向之前执行session_write_close(),以便在重定向之前再次存储会话变量。
https://stackoverflow.com/questions/3250057
复制相似问题