我之前从未遇到过这种情况,但出于某种原因,当我使用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
var下面执行print_r,我可以很好地看到它。在某处,selected
的关键和价值正在消失。
为什么会这样?我希望同时看到name
和selected
。
答案 0 :(得分:1)
您需要先启动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']);
}
答案 1 :(得分:1)
就像我在评论中说的那样,你要覆盖阵列:)
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']= "";
}
答案 2 :(得分:0)
在以任何方式访问会话变量的任何页面的开头,第一个命令必须是对session_start();
的调用