19.セッション管理
サーバアプリケーションでは、そのプログラムの実行が終了するとメモリ上の変数は、消去されてしまいます。
これは、サーバとクライアントとの間でユーザ管理などの処理が大変になります。(クッキーを使えば可能です。)
しかし、セッションを使うことでサーバアプリケーションのプログラムが終了してもメモリ上に変数を残すことができます。
セッション(session)とは、Webサイトにアクセスする単位の事で、セッションIDやセッション変数を使ってページが
移動してもデータを保持することができます。
このセッションIDやセッション変数が同じ間は、同じセッションとします。つまり同じユーザと判断させるわけです。
以下の図がそのイメージになります。
「マイページ」と「登録情報の変更など」のページが同じセッションになるようになっています。
セッションの仕組みは、以下のようになります。
セッション管理では、閲覧したユーザごとに「セッションID」を発行して、クッキーに送信して保存されます。
あるいは、「SID」を使って以下のようにURL付加されます。
<a href="page2.php?<?=SID?>">Next Page</a>
しかし、この方法ではセッションIDクリアテキストで送信されるためセッションIDが盗まれることがあるので
注意が必要です。(あまり使われていません。)セキュアなホームページで使う必要があります。
1.セッションを開始する方法
セッションを開始する場合、以下の関数を実行します。
session_start();
セッションをスタートすると以下の事が実行または、できるようになります。
・一意のセッションIDを発行してサーバ側では、ファイルに保存され、クライアントはクッキーに保存されます。
・セッション変数($_SESSION["キー"])が使えるようになります。
セッション変数は、セッションが終了するまでメモリ上で有効になっています。
2.セッション変数の操作
1)セッション変数に値を代入する。
$_SESSION["キー"]=値;
2)セッション変数から値を取り出す。
$val=$_SESSION["キー"];
3)セッション変数を削除する。
・指定したセッション変数を削除する。
unset($_SESSION["キー"]);
・すべてのセッション変数を削除する。
session_unset();
3.セッションを終了する方法
1)次の関数を実行するとセッションに登録されたデータを全て破棄します。
session_destroy();
2)セッション中のブラウザを閉じる(終了)ことで終了します。
4.その他のセッション処理関数(よくつかわれるもの)
1)セッションIDを取得する関数
session_id();
2)セッションの有効期限を設定する関数
session_cache_expire(分);
この関数は、session_start()関数の前に実行する必要があります。
デフォルト値は、php.iniファイルの中でsession.cache_expire=180 (180分)になっています。
5.セッション管理のサンプル
19-1 セッションIDを使った場合