0

$_SESSION からメッセージをフェッチしてユーザーに表示する header.php に次のコードがあります。コントローラーで「メッセージ」セッション変数を設定します。

<div id="messages">
    <?php if (isset($_SESSION["message"])):?>
    <span class="message"> <?php echo "message is ".$_SESSION["message"]?>
    </span>
    <?php endif ?>
</div>

これは正常に機能し、メッセージが表示されます。ここで、「メッセージ」変数をセッションから削除して、1 つのリクエストでのみ呼び出されるようにしたいので、行 unset($_SESSION["message"]); を追加します。コードは次のようになります。

<div id="messages">
    <?php if (isset($_SESSION["message"])):?>
    <span class="message"> <?php echo "message is ".$_SESSION["message"]?>
    </span>
    <?php 
    unset($_SESSION["message"]);
    else :
    //for debugging
    echo "There is no message";
    endif
    ?>
</div>

現在、メッセージは常に出力されず、代わりに「メッセージはありません」が常に出力されます!! このunset($_SESSION["message"]);行を削除したときに言ったように、メッセージ変数は正しく設定されており、メッセージが表示されます。

ところで、私はフレームワークを使用しておらず、単純な php を使用しています。助けはありますか?

4

4 に答える 4

1

$_SESSION['message']変数を設定する場所がないようです。変数が何も設定されていない場合、最初から何も表示されません。

于 2013-01-03T22:30:17.273 に答える
0

わかりました、どうにかして header(Location) の後に exit() を追加することで解決しましたが、これが問題にどのように関連しているかはわかりません。皆さんありがとう。

于 2013-01-03T23:39:15.850 に答える
0

register_globals がオンになっていない限り、$_SESSION 変数の設定を解除することはできません。できるよ:

unset($GLOBALS[_SESSION]['message']);

または、別の値を指定します。

$_SESSION['message'] = false;
于 2013-01-03T23:09:06.037 に答える
0

$_SESSION["message"]変数を設定することはありません。したがって、一度取得するunset()と、それはなくなります。利用できるようにするには、再度設定する必要があります。

于 2013-01-03T22:26:54.747 に答える