- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:sessionがクリアされない)
sessionがクリアされない
このQ&Aのポイント
- PHPのsessionにおいて、unset関数を使用しても前の値が表示される問題について調査しています。
- include関数のタイミングによって、unset関数が有効にならないことがあります。
- unset関数が有効になるには、unset関数を使用する前にheader.phpをincludeしないようにする必要があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
もうすこし単純なモデルでやってみれば? //AAA.PHP <?php session_start(); $_SESSION["hoge"]="hogehoge"; $_SESSION["fuga"]="fugafuga"; ?> <a href="BBB.php">BBB</a> //BBB.PHP <?php session_cache_limiter('private, must-revalidate'); session_start(); unset($_SESSION["hoge"]); // ※ include "header.php"; ?> //header.php <?PHP var_dump($_SESSION); ?> ※の行をコメントアウトしたり、生かしたりすれば AAA.phpからBBB.phpに移動する際にきちんと消えるかどうかが 確認できると思いますが
その他の回答 (1)
- agunuz
- ベストアンサー率65% (288/438)
回答No.2
>header.phpでは >$_SESSION['pcode']を表示している まさかheader.phpでもsession_start()しているなんてオチはありませんよね(セッションクッキーから$_SESSIONが再生成される)。
質問者
お礼
さすがにそれはありませんでしたが、 同レベルのポカをしていました。 回答ありがとうございました。
お礼
正確にいえば header.phpで、 セッション値があれば、変数に代入し、 その変数を表示していたのですが、 BBB.PHPで セッション値をクリアする前に、同じ変数名で値を代入していました。 そりゃ消えないはず・・。 お騒がせしました。 インクルードをあまり使ったことなかったので タイミングなどが関係しているのかと思っていました。 早くにご回答いただいたので、 ベストアンサーにさせていただきます。 ありがとうございました。