我几乎很尴尬地问,因为它看起来很简单,但我不能让它更新。
当用户登录时,我像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一样。
发布于 2010-07-15 04:15:02
确保在访问$_SESSION变量的每个页面上使用session_start()。
发布于 2010-07-15 04:16:45
听起来更新它的代码可能不会被执行。您可以尝试在此赋值之前放置某种类型的调试语句,如回显,以验证操作是否正在执行。
发布于 2010-07-15 04:17:57
根据Scott的回复,仔细检查会话是否启动是一个很好的“开始”。
这里有一个很好的提示here,你可能会发现它在调试中很有用。
https://stackoverflow.com/questions/3250057
复制相似问题