PHP – 雛形 – セッション

概要

セッション開始時

  • セッション開始時、サーバー側でセッションIDを生成する
  • サーバーはセッションIDをサーバー内に保存し、それをクライアントにCookieで保存する
  • クライアントはセッションIDをサーバーに送り、継続中のセッションでの接続を要求する
  • サーバーは送られてきたセッションIDのセッションが生きていればそのセッションで接続を続ける

セッション処理中

  • サーバーはセッション変数を通して必要な情報を得たりセットしたりする
  • セッション継続中、セッション変数の内容は保持される

セッション終了時

  • セッション変数をクリアする
  • クライアント側のセッションクッキーを完全に削除する
  • session_destroy()を実行する

処理の流れ

継続中セッションの確認

セッション中かどうか確認する必要がある場合、以下で確認。

isset($_COOKIE[session_name()])

セッション開始

  1. session_start()を実行する
  2. セッションで使用しているセッション変数($_SESSION['キー'])が定義されているか確認する
    • 定義されていなければセッション変数を定義してセッション開始
    • 定義されていればセッション継続

セッション終了時

  1. session_start()を実行する
  2. セッション変数をクリア($_SESSION = [])
  3. setcookie()でクライアントのセッションクッキーを削除
  4. session_destroy()を実行

セッションクッキーの名前はsession_name()で得られる。

セッションクッキーの削除

一般的なクッキーの削除は第3引数まで設定すればよいが、セッションクッキーの削除は第4引数のpathまで指定する必要がある。通常、セッションクッキーのパスはドキュメントルート('/')。

setcookie(session_name(), '', 0, '/')

さらにクライアント上のサーバーに関するドメインやセキュリティー設定情報も確実に消すために、session_get_cookie_params()で取得したパラメーターをsetcookie()の全引数に設定するのがよい。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です