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

両方のコンストラクトで print_r を実行すると、varifのみが表示され、もう一方は設定されていません。$_SESSION['user']['theme']['name']varのすぐ下で print_r を実行すると、selected問題なく表示されます。どこかで、 のキーと値が消えていselectedます。

なぜこうなった?nameと の両方を期待していますselected

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 に答える