• 質問失礼します。
    何度も申し訳ないのですがセッション削除についてです...
  • 大山 颯太 
    質問失礼します。

    何度も申し訳ないのですがセッション削除についてです。
    動画内では$_SESSION = array()とsession_unset()は同じようなものと説明しているのですが、使い所などに何か違いがあるのでしょうか。

    ログアウト時のセッション削除の際、前の質問の回答の通りにsession_destroy()と$_SESSION = array()をつかってみました。

    session_destroy();
    $_SESSION = array();

    この直後にデバッグでセッションIDとセッション変数の中身を見たところ両方とも削除されていました。
    次に、試しに$_SESSION = array()ではなく、session_unset()を使ってみました。

    session_destroy();
    session_unset();

    同じく直後にデバッグでセッションIDとセッション変数の中身を見たところセッションIDは削除されていて、セッション変数の中身は削除されていませんでした。
    ちなみに、

    $_SESSION = array(); または session_unset();
    session_destroy();

    この順番で書いた場合どちらもセッションIDとセッション変数の中身が削除されていました。
    $_SESSION = array()とsession_unset()で少し挙動に違いがあるようなので疑問に思い質問されていただきました。
    よろしくお願いします。
    回答 1

    ウェブカツコーチ 
    講師からの回答
    厳密には違うところもあるかもしれませんが、ほぼ同じものと考えて問題ありません。
    しかし現在公式マニュアルには「_SESSION を使っていない古いコードでのみ session_unset() を使用するようにしましょう」とあります。なのでこれから新規で書くコードにおいてsession_unset()は使用するべきではないですね。古いコードにはsession_unset()が存在する可能性がありますが、とりあえず$_SESSION = array();とほぼ同じことをしているのだと考えて大丈夫です。


    >使い所などに何か違いがあるのでしょうか
    に関しては「21年現在はsession_unset()は使用すべきではない」となります。

    なので確実にセッションを削除するのであれば、先の質問回答にセッション破棄の例として記載されている通り、$_SESSION = array()とsession_destroy()の組み合わせで行って下さい。