PHPのセッション・クッキープログラミング
PHPセッション・クッキーの仕組みとプログラミング方法
セッション・クッキーの仕組み※画像クリックで拡大表示
※アイコンの機能:表示 実行 ダウンロード
- PHPのセッション管理とクッキーの仕組み
セッション管理は、クライアント端末に対して「一意なセッションID 」を用意して、複数のページにまたがるHTTPリクエスト間で処理状態の情報を継続させることができます。
- PHPセッション管理の処理フローは、
- 最初のHTTPリクエスト(1)に対して、WEBサーバーを通してPHPサーバーの「セッション開始(2)」処理により、セッションID付きの「セッションファイル(3)」を生成します。
- セッションデータを設定するとセッションファイルの内容が更新(4)され、その内容をクライアント側にあるブラウザにHTTPレスポンスとして「セッションID」付きで送信(5)します。
- セッションIDをブラウザに送信するときには、通常は「セッションクッキー(6)」を利用します。
- セッションIDを使って既存の「セッションデータ」を取得します。セッションIDやセッションクッキー(6)が存在しなければ、PHPに対して新たなセッションを作るよう伝え、「新たなセッションID(3)」を生成します。
- 次に、ブラウザ上のリンクタグをクリック(HTTPリクエスト(7))して、別のページへ処理遷移した場合は、「セッション開始(2)」処理により、そのセッションIDがあるかを確認(8)し、セッションデータの取り込み(10)や書き込み(9)をして、該当するページ内容をHTTPリスポンス(11)します。
- 例えば、会員制のサイトにログインして、処理遷移(ページ遷移)しても、ログイン状態が継続する仕組みはこのセッション管理を利用して実現しております。セッションは、別のサイトへ移動するか、ブラウザを閉じない限り、この状態は継続します。
- PHPのセッション管理の動作は、
PHPの環境設定の初期ファイルである「php.ini」で設定しており、PHP5.4のインストール時に設定した詳細内容は以下のファイルを参照して動作内容の理解を深める必要があります。
デフォルト設定値の利用を前提に設定しており、スクリプトの実行中に「ini_set()」関数で設定オプションの値を変更することも可能です。(スクリプト終了時に元の値へ戻されます。)
PHPセッションの初期設定ファイル:設定内容(PDF) - セッションファイルの保存先は、
「php.ini」で設定したフォルダの「php_session_temp」内で、"sess_"プレフィックス付きセッションIDのファイル名が確認できます。
- セッションファイルの内容は、
セッションデータとして設定した内容($_SESSIONに代入した値)が保存されています。(この例は、後述の「セッションデータの編集」プログラムを実行したもの)
セッション・クッキーのプログラミング
- セッション・クッキー関連の関数プログラミングは、
※PHPのセッション・クッキー関連の関数は、PHPバージョンによって利用できるものとできないものがあることを認識しましょう。
PHPのセッション・クッキー関連の関数一覧(PDF)
- ブラウザの「cookie」データを参照するには、
上記のプログラムで設定されたcookieデータを参照するには、firefoxのブラウザの場合、「ツール」→「オプション」タブで開いて、「プライバシー」を選択し、「Cookieを個別に削除」をクリックします。
該当するURLで検索するか、サイト名のフォルダをクリックして、クッキーの内容を確認できます。
・例1:「セッション開始と破棄」→デフォルトの「PHPSESSID」データ
・例2:「クッキーの編集」→「MyInfo」データ