MW211 EXIT

devlog
PHP/セッションのまとめ
2012年04月28日
┌─────────┬────────────────────────────┐
│クッキー          │ブラウザ側(クライアント側)に記録される情報              │
│                  │有効期限を設定できるが、たいていはブラウザを閉じたら消滅│
│                  │セッション情報についてはIDのみを記録する                │
│                  │※ブラウザ側にあるものなので、詳細な情報を記録すると    │
│                  │  容易に改竄されてしまうおそれがある                    │
├─────────┼────────────────────────────┤
│セッションファイル│サーバ側に記録される情報                                │
│                  │セッション情報の中身を記録している                      │
│                  │※ファイルを開くと「;」区切形式で容易に内容を確認できる │
│                  │正規の手続きとしては「session_destory()」で削除するが、 │
│                  │その処理が漏れた場合(ブラウザの直接終了など)を考慮し    │
│                  │「php.ini」の設定により、一定の間隔で削除する           │
├─────────┼────────────────────────────┤
│セッションID      │クッキーとセッションファイルを結びつけるID              │
│                  │「session_start()」で生成もしくは使用される             │
└─────────┴────────────────────────────┘
・「session_start()」した場合
  クッキー中からセッションIDを探す
  ・セッションIDがある場合
    そのセッションIDと対応するセッションファイル(セッション情報)を使用する
  ・セッションIDがない場合
    セッションIDを生成し、それに対応するセッションファイルを生成するとともに
    クッキーにセッションIDを記録する
・「session_destory()」した場合
  ・セッションファイルを削除する
────────────────────────────────────────
Q.セッションIDおよびセッションファイル生成後、
    セッションファイルを直接削除したらどうなる?
    #「php.ini」の設定による一定の間隔での削除もこれと同等のはず
A.セッションファイルがない場合、
    別のセッションIDおよびセッションファイルを生成します
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
Q.ブラウザを一旦閉じて、「session_start()」し直した場合はどうなる?
A.「session_destory()」を行わないと、セッションファイルは残ったままだが
    クッキー側にそれに対応するセッションIDが記録されていないので、
    別のセッションファイルが生成される
    ただし一部のブラウザ(IE)では、見た目上ブラウザが終了したように見えても
    プロセスとして残り続けている場合があり、
    引き続き同一セッションファイルを継続使用するケースがあるので注意
    →ブラウザを終了させず、タブだけを終了させた場合と同様
────────────────────────────────────────
分類:PHP