これを見てみましょう:
Cookieとセッションはどちらも、ブラウザが行うさまざまなリクエスト間でアプリケーションの状態を保持する方法です。たとえば、 StackOverflowでページをリクエストするたびにログインする必要がないのは彼らのおかげです。
クッキー
Cookieは、キーと値のペアでデータを保持する小さなデータ(最大4KBの長さ)です。
name=value
これらは、JavaScriptによって、またはHTTPヘッダーを使用してサーバー経由で設定されます。
Cookieには、HTTPヘッダーを使用した例のように、有効期限が設定されています。
Set-Cookie: name2=value2; Expires=Wed, 19 Jun 2021 10:18:14 GMT
これにより、ブラウザname2
は値がvalue2
で名前が付けられたCookieを設定し、約9年で期限切れになります。
ユーザーはコンテンツを簡単に操作できるため、Cookieは非常に安全でないと見なされます。そのため、常にCookieデータを検証する必要があります。クッキーから得られるものが必ずしもあなたが期待するものであると思い込まないでください。
Cookieは通常、ログイン状態を維持するために使用されます。この場合、ユーザー名と特別なハッシュがブラウザから送信され、サーバーはそれらをデータベースと照合してアクセスを承認します。
クッキーは、 セッションの作成ます。
セッション
セッションは少し異なります。各ユーザーはセッションIDを取得します。これは、CookieまたはGET変数のいずれかによって検証するためにサーバーに返送されます。。
通常、セッションは短命であるため、アプリケーション間の一時的な状態を保存するのに理想的です。ユーザーがブラウザを閉じると、セッションも期限切れになります。
変数自体がサーバーに保持されるため、セッションはCookieよりも安全であると見なされます。仕組みは次のとおりです。
- サーバーがセッションを開きます(HTTPヘッダーを介してCookieを設定します)
- サーバーはセッション変数を設定します。
- クライアント変更ページ
- クライアントは、手順1のセッションIDとともにすべてのCookieを送信します。
- サーバーはCookieからセッションIDを読み取ります。
- サーバーは、データベース(またはメモリなど)のリストからセッションIDを照合します。
- サーバーは一致するものを見つけ、
$_SESSION
スーパーグローバルで利用できるようになった変数を読み取ります。
PHPが一致するものを見つけられない場合、新しいセッションを開始し、1から7までの手順を繰り返します。
機密情報はサーバーに保持されているため、セッションに保存できますが、ユーザーが安全でないWiFi経由でログインした場合など、セッションIDが盗まれる可能性があることに注意してください。(攻撃者はCookieを盗聴し、それを独自のものとして設定できます。変数自体は表示されませんが、サーバーは攻撃者をユーザーとして識別します)。
それがその要点です。両方の主題に関するPHPマニュアルで詳細を学ぶことができます。