セッションとクッキーの用語についての説明です。
例えば電話で商品を注文する場合、電話が繋がってから切るまでの通話がセッションになります。
| お客様(クライアント) | お店(サーバ) | |
|---|---|---|
| 電話を掛ける | → | 電話を取る |
| ← | いらっしゃいませ、メニューをご覧ください。 | |
| ○をください | → | |
| ← | 他にはいかがですか | |
| △をください | → | |
| ← | 他にはいかがですか | |
| 清算します | → | |
| ← | ○と△で□円になります。よろしければお名前とご住所をどうぞ。 | |
| 名前は◎です。住所は◎です。 | → | |
| ← | のちほど配達します。ありがとうございました。 | |
| 電話を切る | → | |
| 電話を切る |
この通話中はお客様もお店の人も同じ人物で、お店の電話に違うお客様の注文が入ったりすることはありません。
さて、WWWではセッションというものが無く、強いて言えばWebページを1ページ見るごとにセッションが終了するイメージです。
つまり1ページ表示されるごとに電話を切っているようなものです。
| WWWブラウザ | WWWサーバ | |
|---|---|---|
| Webページを見せて | → | |
| ← | どうぞご覧ください |
それで、電話と同じように商品を注文すると以下のようになってしまいます。
| WWWブラウザ | WWWサーバ | |
|---|---|---|
| ○をください | → | |
| ← | はい | |
| WWWブラウザ | WWWサーバ | |
| △をください | → | |
| ← | はい | |
| WWWブラウザ | WWWサーバ | |
| 清算します | → | |
| ← | ご注文はなんでしたっけ? |
WWWサーバにとっては、毎回はじめてのお客様(WWWブラウザ)に見えるのです。
1つの解決方法として、お客様が手元でメモを取る方法を提案しましょう。
| お客様(WWWブラウザ) | お店(WWWサーバとPHP) | ||
|---|---|---|---|
| メモ | |||
Webページを見せて |
→ | ||
| ← | いらっしゃいませ、メニューをご覧ください。 | ||
| ○をください | → | ||
| ○を注文 | ← | 他にはいかがですか | |
| △をください | → | ||
| ○と△を注文 | ← | 他にはいかがですか | |
| ○と△を注文 | 清算します | → | |
| ← | ○と△で□円になります。よろしければお名前とご住所をどうぞ。 | ||
| ○と△を注文 | 名前は◎です。住所は◎です | → | |
| ← | のちほど配達します。ありがとうございました。 | ||
お客様の手元のメモを毎回お店に見せることで注文を行うことができました。このメモのことをクッキー(cookie)と言います。
このクッキーの設定はお店(WWWサーバとPHP)からも指示することが可能です。
別の方法として、お店側がメモを取る方法を提案しましょう。
| お客様(WWWブラウザ) | お店(WWWサーバとPHP) | |||
|---|---|---|---|---|
| メモ | メモ | |||
Webページを見せて |
→ | |||
| ← | いらっしゃいませ、メニューをご覧ください。 整理番号は123です。 |
|||
| 整理番号123 | ○をください | → | ||
| ← | 他にはいかがですか | 123:○ご注文 | ||
| 整理番号123 | △をください | → | ||
| ← | 他にはいかがですか | 123:○と△ご注文 | ||
| 整理番号123 | 清算します | → | ||
| ← | ○と△で□円になります。 よろしければお名前とご住所をどうぞ。 |
123:○と△ご注文 | ||
| 整理番号123 | 名前は◎です。住所は◎です | → | ||
| ← | のちほど配達します。ありがとうございました。 | |||
お客様が来店されたときに整理券をお渡しし、その整理番号によりお店側(WWWサーバとPHP)でお客様の注文を管理します。
この方法を「セッション管理」と言い、お店のメモを「セッションデータ」、整理番号を「セッションID」と言っています。
セッションとは通話が繋がってから切れるまでの間のことです。WWWでは基本的に1ページごとに通話が完了するので、ページをまたがって情報を記憶するにはクッキーやセッション管理を使います。
詳しくはPHPマニュアルの「セッション処理関数」や「クッキー」もご覧ください。