頭がすごく痛いです。。。はっきりとした答えを出さず矛盾を並べるのはもうやめてくれぇえ(;_;)
本題です
セッションとクッキー(Session/Cookie)
「セッションとクッキー」はどちらも同じ機能を持つ。はい、、、
サイトのログイン機能だけなら二つの内、セッションを使えばそれで済みます!
なるほど。。。
クッキーとセッションの違いは?
違う点といえば情報の保存場所と保存期間が挙げられます。
保存場所
・クッキーはクライアント側のマシン(主にブラウザ)にのみ保存され
・セッションはブラウザだけでなく、サーバーにも情報が保存されます。
ここだけを見ると「じゃセッションだけでよくね?」ってなりますが、
ショッピングカートの機能など、セッションだけの力では実現する事ができない物があります。
ほうほう
保存期間
セッションは接続中のユーザーの活動に関連する情報を一時的に保存しているのに対し
クッキーは永続的な保存期間をもちます。
そもそもなんでクッキーやセッションを使うの?
ログアウトしてページを閉じてから戻ってくると
サーバーが以前の状況を覚えていない、、、のでは困るから。
なんで覚えていないの?
HTTPでのクライアントとサーバーのやりとりは
1回のリクエスト&レスポンスで通信が切断終了するから・・・
サイトにアクセスたときクライアントは「画像をください」という指示をリクエストします
クライアント > サーバーに リクエスト。 (開始)
サーバーはクライアントのリクエストに答えて画像をレスポンスする(渡す)
サーバー > クライアントに レスポンス。 (終了)
この一回の往復で通信が終わり2度目の通信時にはサーバーはあなたが誰で
1度目のあなたに何を渡したのか以前の状況を全く覚えていない。
これをステートレス( state less )状態という。
状態を保持(ステートフル)状態にする必要がある。
ここから話がややこしくなります(矛盾します)
ショッピングサイトを作る際はこのセッションと永続クッキーを使います。
なるほど?」
セッションはユーザーがブラウザを閉じるか、サイトを離れると情報が削除されます。一方、クッキーには永続クッキーがあり、情報を保持し続けます。
おお!!?」
クッキーは取得した「誰が?」という情報と、
セッションは取得した「何をしたか?」という情報をあつかいます。
すげーー!」
ショップサイトから離れたり閉じたりしても
ショッピングカートに商品が入ったままになっているのは、
セッションによって情報を保存していたからです。
あれ。。。でもページから離れると情報は消えるん。。。ん?」
はい、、、以下無限ループです。
結局最後は私なりの解釈ですが
クッキーがなくてもショッピングサイトはつくれるのでは?
まずセッションはセッションIDを発行してブラウザーのクッキーに(データファイル)に渡しサーバーには
セッション時に何をしたかという情報が残るのではないでしょうか?
だとしたらログアウト&ページを閉じるなどしても、
もう一度ログインしたときにはちゃんとカートに入れた商品は残っているはずですが・・・?
私の間違えでしょうか。
なにも永続クッキーだのセッションクッキーだのセットクッキーだのをいじらなくても
セッションスタートでセッションIDが発行されたら自動でクライアントのデータファイル(クッキー)に保存されるんじゃないんでしょうか。。。
私の見解があっているかわかりませんが
永続クッキーってのは単にログインをいちいちしなければならない手間を省くためのものではないのでしょうか。
動作はPHPを想定してます。
==追記==
環境はWin10Nginxをサーバーとして動かしています
PHPはCGIです
DBはMariaDBです
すべて最新のバージョンで制作していますが
制作・動作と呼べるようなことはまだ何も出来ていません
コピペでログイン機能を実装してテストしているくらいです
よろしくお願いします!
参考サイト
https://ssaits.jp/promapedia/technology/cookie-session-cache.html#toc_id_3_1
http://www.osssme.com/doc/funto62.html
https://qiita.com/7968/items/ce03feb17c8eaa6e4672#comments
https://kanda-it-school-kensyu.com/php-basic-contents/pb_ch11/pb_1103/
https://winofsql.jp/VA003334/infoboard_page.php?mid=jsp&id=030211112458
回答7件
あなたの回答
tips
プレビュー