セッション機能について

◆セッションとは

●Webサーバーとブラウザ間で継続した通信を行うために必要な機能
●セッション機能は、クッキー機能を利用している

◆セッションの仕組み

セッション機能を使うには...

「$_SESSION」というスーパーグローバル変数に値を格納します。

セッション変数($_SESSION)の値をWebサーバー上のファイルに保管します。

また、session_start関数は、ブラウザから
送られてくるクッキーの値をもとに、どのブラウザかを特定し、
そのブラウザ専用のセッション変数を復元させます。

◆セッションの流れ

①初めてのリクエスト
  ブラウザからsession1.phpにアクセス。

②セッションIDと、セッションを保持しておく
 セッションファイルの作成

 session_start関数は、初めてのアクセスか、
 2回目以降のアクセスかを判別します。

 初めてのアクセスの場合は、「セッションID」生成します。
 ここでは「ID」となっていますが、実際のセッションIDは
 32文字のランダムな数字です。

 このセッションIDを元に、$_SESSIONに格納された値を
 保持するためのファイルをWebサーバ上に生成します。
 (この時点でファイルの中身は空です。)

③ $_SESSIONに格納された値をファイルに書き込む

 PHPスクリプトの実行の完了とともに、$_SESSIONに格納された値を
 生成されたセッションファイルに書き込みます。

④ヘッダーとHTMLの出力をする

 Webサーバーからブラウザにレスポンスを返す際、
 セッションIDがヘッダーに記載されます。

⑤Webサーバーから送られてきたセッションIDをブラウザが
 クッキーとして保存する

 サーバーから送られてきたクッキー情報を、ブラウザが受け取って
 保存します。

⑥別ページに遷移する時、自動的にクッキーの値がWebサーバーに
 通知される

 ブラウザに保持されているクッキー値は、同じドメインに
 アクセスしたとき、自動的にクッキーの値(ここではセッションID)
 をヘッダーに記載してサーバーに通知されます。

⑦セッションIDを受け取ると、session_start関数は
 セッション変数を復活させる

 セッションIDがクッキーによって通知された場合、
 session_start関数はセッションファイルから値を取り出します。
 このときWebサーバーのディスク上にセッションファイルが
 あるかどうか確認します。
 ファイルが存在した場合は、ファイルの中身を取り出して、
 $_SESSIONの値を復活させます。

⑧session_start関数の後、$_SESSIONが復活する
 session1.phpで設定された$_SESSIONが、
 session_start関数の後session2.phpでも
 利用することができます。

⑨レスポンス

◆セッションの開始

●session_start関数の実行

 session_start関数は、「セッションを開始しますよ」という
 合図です。
 これを記述しないと、$_SESSION変数はセッション機能を
 果たしません。

◆セッション変数の受け渡し

 $_SESSIONに値を格納すると、同一のセッションで値を
 共有できます。
 このような変数をセッション変数と言います。

<?php
    $_SESSION['one'] = 1;
?>

◆セッションの終了

    * セッション変数の初期化($_SESSION = array(); )
    * session_destroy関数の実行(セッションファイルの削除)

 セッション変数を空にして、生成したセッションファイルを
 session_destroy関数で削除します。