セッション破棄

終了時にデータを消す

セッション終了時には、セッションIDを無効にする作業の他、サーバメモリに保存されるセッション変数とクライアントクッキーに保存されるセッションIDの消去を実行するようにしましょう。 またサーバディスクに保存されるセッションファイルを消去するようにしましょう。

セッション変数の消去

セッション変数を消去するには、以下のように記述します。

  $_SESSION = array();
  

これにより、セッション変数の中身が破棄(空配列で上書き)されます。

セッションクッキーの破棄

ユーザーのブラウザに保存されているセッションクッキーを破棄します。

  if (isset($_COOKIE[session_name()])) {
    setcookie(session_name(), '', time()-42000, '/');
  }
  

クライアント側のセッションIDを破棄することができます。 この場合も、実際には空データで上書きを行っています。

一番目の引数はセッションIDを、二番目の引数は空データを、三番目の引数はクッキーの有効期限(無効になるように負の時刻を指定する)を、四番目の引数は有効なディレクトリ(/はドメイン全体を示す)を指定しています。

セッションIDの破棄

サーバに保存されるセッションIDを破棄すると、セッション破棄作業が完了します。

  session_destroy();
  

session_destroy()が行うのは、IDを無効にするだけです。 このため、セッション変数の中身を空データで上書き=>セッション破棄という手順が必要になります。

分かりやすいように、図書館の比喩で考えてみましょう。 session_destroy()は蔵書データのインデックスを消すことに相当します。 本自体は残るので、何らかの方法で読み出しされる可能性があります。 $_SESSION = array()を実行すると、本そのものを消去する(白紙にする)作業を行います。

Copyright (C) 2003-2018. PHP で WEB 作成 All rights reserved.