セッション機能について
◆セッションとは
●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関数で削除します。