• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:sessionがクリアされない)

sessionがクリアされない

このQ&Aのポイント
  • PHPのsessionにおいて、unset関数を使用しても前の値が表示される問題について調査しています。
  • include関数のタイミングによって、unset関数が有効にならないことがあります。
  • unset関数が有効になるには、unset関数を使用する前にheader.phpをincludeしないようにする必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

もうすこし単純なモデルでやってみれば? //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に移動する際にきちんと消えるかどうかが 確認できると思いますが

angelinaane
質問者

お礼

正確にいえば header.phpで、 セッション値があれば、変数に代入し、 その変数を表示していたのですが、 BBB.PHPで セッション値をクリアする前に、同じ変数名で値を代入していました。 そりゃ消えないはず・・。 お騒がせしました。 インクルードをあまり使ったことなかったので タイミングなどが関係しているのかと思っていました。 早くにご回答いただいたので、 ベストアンサーにさせていただきます。 ありがとうございました。

その他の回答 (1)

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.2

>header.phpでは >$_SESSION['pcode']を表示している まさかheader.phpでもsession_start()しているなんてオチはありませんよね(セッションクッキーから$_SESSIONが再生成される)。

angelinaane
質問者

お礼

さすがにそれはありませんでしたが、 同レベルのポカをしていました。 回答ありがとうございました。

関連するQ&A