• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:[PHP]セッション破棄について)

[PHP]セッション破棄について

このQ&Aのポイント
  • phpを使ったログアウト処理について質問です。
  • ログアウト処理にはlogout01.phpとlogout02.phpという2つの方法がありますが、違いは何でしょうか。
  • また、セッションの破棄方法やクッキーの削除についても教えてください。

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

  • ベストアンサー
  • papa987
  • ベストアンサー率19% (21/106)
回答No.2

>「$_SESSION = array();」は全セッションの初期化 セッション変数$_SESSIONの中身を空(初期化、破棄)する。 >「session_destroy();」は全セッションの破棄 セッションを破棄する。ただしセッション変数は破棄しないから ですから一般的には $_SESSION = array(); をやってから session_destroy(); をする。 >「unset($_SESSION['access']);」は指定したセッションの破棄 セッション変数$_SESSION['access']の破棄。 だから別AとBという内容があり Aだけがいらなくなったら $_SESSION['A']でAのみ破棄してBを残すこともできます。 セッションとセッション変数は別々に考えましょう。

rfc137
質問者

お礼

ありがとうございます。 おかげでモヤモヤしていたものがスッキリしました。

その他の回答 (1)

  • papa987
  • ベストアンサー率19% (21/106)
回答No.1

$_SESSION = array(); の場合は破棄ではなくて配列を作る関数とでも書けば理解できますか? でarray();とすることで空の配列変数となっただけです。 すでに配列にないか入っている状態で配列変数を空にするときに使うことがあります。 次にまずunset関数のの役割を理解しよう。 http://www.google.co.jp/search?hl=ja&safe=off&q=PHP+unset&lr= 簡単に書くと変数を破棄する関数です。 で、 unset($_SESSION); と書いたら$_SESSIONそのものを破棄 unset($_SESSION['access']); と書いたら $_SESSION内のaccessという名前の連想配列を破棄したことになり $_SESSIONそのものは破棄はされないと言うことになります。

rfc137
質問者

お礼

ご回答ありがとうございます。 >$_SESSION = array(); >の場合は破棄ではなくて配列を作る関数とでも書けば理解できますか? >でarray();とすることで空の配列変数となっただけです。 >すでに配列にないか入っている状態で配列変数を空にするときに使うことがあります。 ⇒つまり、セッションの初期化ではなく、破棄をしたい場合、  logout01.phpでは「session_destroy();」のみで破棄が行われているということですね。 >unset($_SESSION); >と書いたら$_SESSIONそのものを破棄 >unset($_SESSION['access']); >と書いたら >$_SESSION内のaccessという名前の連想配列を破棄したことになり >$_SESSIONそのものは破棄はされないと言うことになります。 ⇒つまり、unset($_SESSION['access'])、unset($_SESSION['access02'])、unset($_SESSION['access03'])と  1つずつ破棄していくか、「session_destroy();」でまとめて破棄するかが違うだけで処理そのものは同じ  ことをしているということですね。 まとめると、下記の通りということですね。 「$_SESSION = array();」は全セッションの初期化 「unset($_SESSION['access']);」は指定したセッションの破棄 「session_destroy();」は全セッションの破棄

関連するQ&A