• 退会機能のセッショ
    ンの削除(session_destroy();)に関...
  • じゅんやじゅんや 
    退会機能のセッションの削除(session_destroy();)に関して質問です。動画は7分35秒です。

    ログを見てみると、「session_destroy();」でセッションIDやセッション変数が削除されていないように思います。


    退会ボタンを押すとブラウザはサーバーに対して、withdraw.phpファイルを要求します。
    ブラウザは上から1行1行読み込んで行ってPOST送信されているのでif文の中に入って、SQL文が実行されます。結果がtrueだった場合には、セッション変数を削除するコードがあります。

    セッションが削除されているので、debugしたときにセッション変数の中身は空になっていないとダメなきがしますが。php.logを見てもセッションIDやセッション変数が残っているようで、中身が表示されています。
    これはどうしてでしょうか??

    また今回ページ遷移する( header("Location:index.php");)必要があるので、サーバーはブラウザに「302」を返すと思います。
    セッションを削除したので、レスポンス通信を見たときセッションIDがあるのはおかしいように思うのですが、通信をみると、クッキーにセッションIDが格納されています。
    セッションが削除されているのに、どうしてセッションIDが通信にのっているのかわかりません。

    session_start()やsession_regenerate_id();があれば、セッションIDが通信になっているのは辻褄が合うのですが、削除されているのにどうして??と思っています。

    教えてください。
    回答 0

     
    完全に情報を破棄するには以下3つの処理が必要になります。
    1)セッション変数の削除
    2)クッキーの削除
    3)セッションIDの破棄

    つまりsession_destroyしてもセッション変数は残されたままとなります。
    (セッションを破棄しても、セッション変数に入ってる値までは削除できません。)
    またセッションIDについても同様ですので消さないとクッキーに格納してしまいます。

    https://kappuccino-2.hatenadiary.org/entry/20080726/1217049706