第11章 クッキーとセッションを利用しよう
11.1 データ送信とデータの共有方法
クッキーとセッションを学習する上で重要になってくる、データ送信(リクエストとレスポンス)とデータの扱い方(データの共有)について知っておきましょう。
11.1.1 リクエストとレスポンスの仕組み
WebサイトをWebブラウザから見る場合、必ずWebサーバへ要求「HTTPリクエスト」を出し、その要求に対する応答「HTTPレスポンス」をWebサーバがWebブラウザへ返す仕組み(HTTPプロトコル)になっています。このHTTPプロトコルは、同じ場所(クライアント)からの再リクエストであっても、最初のリクエストと次のリクエストとの間には何の関係も持っていません。あくまでもその時の要求に対しての応答を返すだけで、前回の状態を保持できない仕組みになっています。
図 11.1.1: リクエストとレスポンスの仕組み
そのため、ページ間でデータを共有するためには様々な工夫が必要になります。これまでの章で学習した、隠しフィールド(inputタグのtype属性hidden)を使って、引き継ぎたいデータを保持する方法や、ファイルへ書き出して保持する方法があります。しかし、これらの方法では、扱うデータの数やページ数が多くなってきた場合に、前者は記述するコードが多岐に渡るため煩雑になり、後者はファイル操作を行うため応答時間が遅くなるという問題が出てきます。
これらの代わりに登場する技術が、「クッキー」と「セッション」になります。両者どちらもデータを保存しておけば、ページ間の共有データとして扱えるようになります。
11.1.2 データの共有方法について
前項で簡単に説明しましたが、データをページ間で共有する方法には以下の方法があります。
■データ共有方法と主な利用方法
方法1)
隠しフィールド(<input type=”hidden” >)を使って共有する方法:9章で学習済み
→単一のページ間でデータを共有したい場合に利用します。
方法2)
ファイルに保存(書き込み)して共有する方法:10章で学習済み
→主にデータベースが利用できない(しない)場合で、大量のデータを保持したい時に利用します。
※他の方法が便利で簡単に利用できるため、ページ間のデータ共有のためだけには利用しません。
方法3)
クッキーを使って自身のパソコン内(ブラウザ毎)に保存し共有する方法:本章の11.2節で学習
→再度Webページへアクセスされた場合や、長期間データを保持したい場合に利用します。
方法4)
セッションを使ってサーバ内に保存し共有する方法:本章の11.3節で学習
→Webページへアクセスしている間、複数ページ間でデータを共有したい場合に利用します。
方法5)
データベース(MariaDB等)を使ってデータを共有する方法:12章で学習
→大量のデータを関連付けて保存・管理したい場合に利用します。
※②同様ページ間のデータ共有のためだけには利用しません。
方法1~5のデータ共有方法について、まとめたものを以下表に示します。
表 11.1.1:データ共有方法のまとめ
上記の表からも確認できるようにそれぞれ特性が異なるため、利用する状況に応じて使い分ける必要があります。まだ学習していない方法についてはこれから紹介していきますので、現段階では各共有方法について軽くイメージしておく程度で構いません。
それでは、次項よりクッキーの仕組みとその利用方法について詳しく紹介していきます。