我以前从未遇到过这种情况,但由于某种原因,当我使用AJAX设置会话变量时,会话将无法容纳它们。
这是我所拥有的:
session_start();
if(isset($_POST['selected'])){
$_SESSION['user']['theme'] = array ('selected' => true);
} // This should be now set with the value and it is for a time, but unsets
if(isset($_POST['theme'])){
$_SESSION['user']['theme'] = array('name' => $_POST['theme']);
} // So should this
当我在两个if
构造下执行print_r时,我看到的只是$_SESSION['user']['theme']['name']
var,而另一个没有设置。如果我在selected
变量下进行print_r,我可以很好地看到它。在某个地方,selected
的密钥和价值正在消失。
为什么会发生这种情况?我期待看到name
和selected
。
正如我在评论中所说,您正在覆盖数组:)
session_start();
//changed it to unset if not in $_POST
$_SESSION['user']['theme']['selected'] = isset($_POST['selected']);
if(isset($_POST['theme'])){
$_SESSION['user']['theme']['name'] = $_POST['theme'];
} // and unset it too
else {
$_SESSION['user']['theme']['name']= "";
}
您需要首先启动session
session_start();
if(isset($_POST['selected'])){
$_SESSION['user']['theme'] = array ('selected' => true);
}
还要检查$_POST
值是否为not empty
。您需要在会话中取消设置名称,然后像一样分配它
if(isset($_POST['theme'])){
unset($_SESSION['user']['theme']['name']);
$_SESSION['user']['theme'] = array('name' => $_POST['theme']);
}
在以任何方式访问会话变量的任何页面的开头,第一个命令必须是对session_start();
的调用