WEBデザイン・開発講義WEB Design&Development Lecture

PHPのセッション・クッキープログラミング

PHPのセッション・クッキープログラミング

PHPセッション・クッキーの仕組みとプログラミング方法

セッション・クッキーの仕組み※画像クリックで拡大表示

※アイコンの機能:表示   実行  ダウンロード

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

セッション・クッキーのプログラミング

  • セッション・クッキー関連の関数プログラミングは、
    ※PHPのセッション・クッキー関連の関数は、PHPバージョンによって利用できるものとできないものがあることを認識しましょう。
    PHPのセッション・クッキー関連の関数一覧(PDF)
    セッション・
    クッキー機能
    関数 / 変数
    プログラム内容
    セッション開始と破棄$bool=session_start(), session_destroy()
    「セッションが明示的の開始するためには、session_start()関数を利用、セッション破棄は、session_destroy()を利用」
    返り値のtrue取得は、PHP5.3以降
    セッション名の設定と取得session_name( ['xxx'] )
    「セッション名の設定と取得するためには、session_name()関数で引数あり:name設定、引数なし:現在のname取得を利用。」
    セッションのID設定と取得session_id( ['xxx'] )
    「session_id()関数で引数あり:ID設定、引数なし:現在のID取得、及びクエリ文字列のSIDの利用。」
    セッションデータの編集$_SESSION(スーパーグローバル変数)
    「セッションデータの編集は、$_SESSIONの連想配列へ代入、クリアや$_SESSIONのデータ操作が可能。処理遷移のセッション管理の実行。」
    セッションデータの変換session_encode(), session_decode('xxx')
    「セッションデータの$_SESSIONから文字列表現の変換するためには、session_encode()関数を利用し、逆に$_SESSIONへ戻すには、session_decode()関数を利用。」
    セッション・クッキーの設定・取得session_set_cookie_params('xxx'), session_get_cookie_params()
    「セッション・クッキーの設定するために、session_set_cookie_params('xxx')関数を利用し、取得するためにsession_get_cookie_params()関数を利用」
    セッションのキャッシュリミットsession_cache_limiter, session_cache_expire
    「セッションのキャッシュリミットは、クライアントに送信されるキャッシュ制御用の HTTPヘッダを制御する「private」他の設定、現在のキャッシュ有効期限の設定などの関数利用」
    セッションの終了・保存session_write_close() 又は session_commit()
    「セッションを明示的に終了・保存するために、session_write_close()関数を利用」(フレームのHTMLドキュメントで、あるフレーム内で終了して別のフレームの処理を短縮することなどで利用)
    クッキーの編集setcookie(), $_COOKIE(スーパーグローバル変数)
    「クッキーデータの編集は、setcookie()関数を利用して保存し、取込は$_COOKIEの連想配列を利用する。」
  • ブラウザの「cookie」データを参照するには、
    上記のプログラムで設定されたcookieデータを参照するには、firefoxのブラウザの場合、「ツール」→「オプション」タブで開いて、「プライバシー」を選択し、「Cookieを個別に削除」をクリックします。
    該当するURLで検索するか、サイト名のフォルダをクリックして、クッキーの内容を確認できます。
    ・例1:「セッション開始と破棄」→デフォルトの「PHPSESSID」データ
    セッション開始と破棄プログラム実行して作成されたcookie内容
    ・例2:「クッキーの編集」→「MyInfo」データ
    cookieの編集プログラム実行して作成されたcookie内容

PHPプログラミング補足説明

PHPリファレンス

参考資料の表示

pagetopへ