1

我以前从未遇到过这种情况,但由于某种原因,当我使用 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 而另一个没有设置。如果我在 var 下做一个 print_r selected,我可以看到它就好了。在某个地方,键和值正在消失selected

为什么会这样?我期待看到nameselected

4

3 回答 3

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']);
} 
于 2013-09-02T04:31:28.260 回答
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']= "";
}
于 2013-09-02T04:38:09.457 回答
0

在以任何方式访问会话变量的任何页面的开头,第一个命令必须是调用session_start();

于 2013-09-02T04:35:39.583 回答