0

明らかな何かが欠けていると思います。ページの一番上からセッションを開始しました。その下に、次のコードがあります。"one"要求されたページから表示されると、var ダンプが出力されます。var ダンプを更新した後、 puts を出力しNULLます。これが保存されないのはなぜですか?

if($_REQUEST["page"] == 1) {
    $_SESSION["one"] = true;
}

var_dump($_SESSION["one"]);
4

2 に答える 2

0

まず、セッションを使用する前に、セッションを開始する必要があります。次に、一般的に REQUEST を使用する代わりに、POST または GET を指定することをお勧めします。GET または POST をサポートする場合は、次のようにします。

// Begin Session Management
session_start();

// Check both GET and POST for the parameter
if($_GET['page'] == 1 || $_POST['page'] ) {
    // Modify the session 
    $_SESSION["one"] = true;
}

// See what we ended up with in the session.
var_dump($_SESSION["one"]);

これは私にとってはうまくいきますが、セッションのセッションハンドラーとして memcache を使用しています。php.ini で独自のセッション ハンドラーを確認し、セッション ハンドラーが正しく機能していることを確認します。また、リダイレクト、新しい場所の設定、または異常な方法で終了する場合は、セッションを適切に閉じていることを確認してください。

于 2013-08-14T15:52:39.987 に答える
0

あなたがsession_start()主張するように、ページの上部にある場合、コードは次のようになります。

session_start();

if($_REQUEST["page"] == 1) {
    $_SESSION["one"] = true;
}

var_dump($_SESSION["one"]);

これは 100% うまくいくはずです。あなたが提供していないコードでこれが機能するのを妨げている何かがあります。私の最初の推測は、ある種のセッション破壊でしょう。

于 2013-08-14T17:27:03.717 に答える