連動しない
状態:-
閲覧数:21,096
投稿日:2014-06-29
更新日:2014-06-30
ブラウザを閉じた際の、セッションデータの挙動
・セッションデータはブラウザに依存せず、一定時間残る
誤り
・ブラウザを閉じれば、セッションデータは削除される
正解
・ブラウザを閉じると、セッションIDを格納したクッキーは削除される(デフォルト設定の場合)
↓
・再起動したブラウザ(クライアント側)にはセッションIDを格納したクッキーが残っていないため、そのセッションにアクセスできない
(サーバー側にセッションデータが残っていても、紐付けが解けたため、読み取ることができない)
背景
・ページ読み込み完了後、通信は切断している。クライアント側(PHPプログラム)から見ても、HTTPサーバ(Apacheなど)から見ても
・ブラウザを閉じても、『ブラウザを閉じた』という情報を、ブラウザはサーバーに送信しない
・ブラウザを閉じたタイミングで、セッションデータ(サーバ側に保持)を削除することは出来ない
・PHPの$_SESSIONは、自動的にクッキーに対してセッションIDを保持させる(デフォルト設定の場合)
・そのセッションIDの保持期限が、ブラウザが閉じるまでとなっている
確認方法
・ブラウザを閉じずに、クッキーを削除しさえすれば、セッションデータにアクセスできなくなることが確認できる
・sessionとcookieの設定内容の区別
・セッションデータはブラウザに依存せず、一定時間残る
誤り
・ブラウザを閉じれば、セッションデータは削除される
正解
・ブラウザを閉じると、セッションIDを格納したクッキーは削除される(デフォルト設定の場合)
↓
・再起動したブラウザ(クライアント側)にはセッションIDを格納したクッキーが残っていないため、そのセッションにアクセスできない
(サーバー側にセッションデータが残っていても、紐付けが解けたため、読み取ることができない)
背景
・ページ読み込み完了後、通信は切断している。クライアント側(PHPプログラム)から見ても、HTTPサーバ(Apacheなど)から見ても
・ブラウザを閉じても、『ブラウザを閉じた』という情報を、ブラウザはサーバーに送信しない
・ブラウザを閉じたタイミングで、セッションデータ(サーバ側に保持)を削除することは出来ない
・PHPの$_SESSIONは、自動的にクッキーに対してセッションIDを保持させる(デフォルト設定の場合)
・そのセッションIDの保持期限が、ブラウザが閉じるまでとなっている
確認方法
・ブラウザを閉じずに、クッキーを削除しさえすれば、セッションデータにアクセスできなくなることが確認できる
・sessionとcookieの設定内容の区別
セッションが有効な期間とクッキーを保存しておく期間は、一般には一致しない
理由
・セッションはサーバーで取り扱っているデータであり、クッキーはブラウザーなどのクライアントで扱っているデータであるため
クッキーは大きく2種類に分かれる
2種類
・セッションクッキー
・パーシステントクッキー
セッションクッキー
・session.cookie_lifetimeを0にする
・クッキー発行時のHTTPレスポンス(リクエストではない) Set-Cookie: ヘッダーにexpires=....を含まない
・ブラウザーを閉じるとクッキーが送信されなくなる
パーシステントクッキー
・session.cookie_lifetimeを0より大きくする
・クッキー発行時のHTTPレスポンス(リクエストではない) Set-Cookie: ヘッダーにexpires=....を含む
・ブラウザーをいったん閉じても、expiresで指定された有効期限内ならクッキーが再び送信される
一覧表
- | セッションクッキー | パーシステントクッキー |
---|---|---|
session.cookie_lifetime | 0 | 0より大きくする |
「クッキー発行時のHTTPレスポンスSet- Cookieヘッダー」に、expires=(日時)を | 含まない | 含む |
ブラウザーを閉じると | 自動的に消滅 | 消滅せず、有効期限が過ぎるとブラウザーから送信されなくなる(※有効期限までは効力発揮) |