ホームページ >バックエンド開発 >PHPチュートリアル >Cookieとセッションの違いを詳しく解説

Cookieとセッションの違いを詳しく解説

jacklove
jackloveオリジナル
2018-06-14 15:46:551848ブラウズ

Cookieとセッションの違いを詳しく解説

これらは基礎知識ですが、深く理解する必要があります。まずは簡単に紹介しましょう。

この 2 つの定義:

Web サイトを閲覧すると、まず WEB サーバーが小さな情報をユーザーのコンピュータに送信し、Cookie はユーザーがその情報を入力するのに役立ちます。テキストまたは一部の選択が

記録されます。次回同じWebサイトにアクセスすると、まずWEBサーバーが前回残したCookie情報があるかどうかを確認し、存在する場合はCookie

の内容に基づいてユーザーを判断して送信します。あなたへの特別なウェブコンテンツ。 Cookie の使用は非常に一般的であり、Web インターフェイスを備えた無料の電子メール Web サイトなど、パーソナライズされたサービスを提供する多くの Web サイトでは、ユーザーに合わせたコンテンツを送信するために Cookie

が使用されます。


具体的には、Cookie メカニズムはクライアント側で状態を維持するソリューションを使用し、セッション メカニズムはサーバー側で状態を維持するソリューションを使用します。

同時に、サーバー側で状態を維持するソリューションではクライアント側にも ID を保存する必要があるため、セッション メカニズムで Cookie メカニズムを使用する必要がある可能性があることもわかります

ID を保存するという目的を達成するためですが、実際には他のオプションもあります。

Cookie のメカニズム。オーソドックスな Cookie の配布は、HTTP プロトコルを拡張することによって実現され、サーバーは HTTP 応答ヘッダーに特別な命令行を追加し、その命令に従って対応する Cookie を生成するようブラウザに指示します。ただし、JavaScript や VBScript などの純粋なクライアント側スクリプトも Cookie を生成する可能性があります。 Cookie の使用は、特定の原則に従ってバックグラウンドでブラウザによってサーバーに自動的に送信されます。ブラウザは、保存されているすべての Cookie をチェックします。Cookie によって宣言されたスコープ

が、要求されるリソースの場所以上である場合、Cookie は要求されたリソースの HTTP 要求ヘッダーに添付されて送信されます。サーバーに。

Cookie の内容には主に、名前、値、有効期限、パス、ドメインが含まれます。パスとドメインを合わせて Cookie のスコープを形成します。有効期限が設定されていない場合、これらの

Cookie の有効期間はブラウザ セッション中にあり、ブラウザ ウィンドウを閉じると Cookie は消えます。ブラウザーのセッション中に保持されるこのタイプの Cookie は、セッション Cookie と呼ばれます。

セッション Cookie は通常、ハードディスクではなくメモリに保存されます。もちろん、この動作は仕様では規定されていません。有効期限が設定されている場合、ブラウザは Cookie

をハードディスクに保存します。ブラウザを閉じて再度開いても、設定された有効期限が経過するまでこれらの Cookie は有効です。ハードディスクに保存された Cookie は、2 つの IE ウィンドウなど、異なるブラウザ プロセス間で共有できます。メモリに保存された Cookie の場合、ブラウザごとに異なる処理方法 (

#セッション メカニズム) が使用されます。セッション メカニズムはサーバー側のメカニズムであり、サーバーは情報を保存するためにハッシュ テーブルに似た構造を使用します (またはハッシュ テーブルを使用する場合もあります)。

プログラムがクライアントのリクエストに対してセッションを作成する必要がある場合、サーバーはまずクライアントのリクエストにセッション識別子

(セッション ID と呼ばれます) が含まれているかどうかを確認します。含まれている場合は、Contains がそれを示します。このクライアントに対して以前にセッションが作成されており、サーバーはセッション ID

に従ってこのセッションを取得します (取得できない場合は、クライアント リクエストに次のものが含まれていない場合は、新しいセッションが作成されます)。この目的のために、クライアントはセッションを作成し、このセッションに関連付けられたセッション ID を生成します。セッション ID の値は、繰り返されず、偽造するパターンも簡単に見つけられない文字列である必要があります。は、この応答

でクライアントに返され、保存されます。このセッション ID を保存する方法では Cookie を使用できるため、対話プロセス中に、ブラウザーはルールに従ってこの識別子を

サーバーに自動的に送信できます。通常、この Cookie の名前は SEEESIONID に似ています。ただし、Cookie は人為的に無効にすることができ、Cookie が無効になってもセッション ID をサーバーに戻すことができるようにするための他のメカニズムが必要です。

頻繁に使用される手法は URL 書き換えと呼ばれるもので、URL パスの末尾にセッション ID を直接追加します。フォーム隠しフィールドと呼ばれる手法もあります。つまり、サーバー

はフォームを自動的に変更し、非表示フィールドを追加して、フォームの送信時にセッション ID をサーバーに返すことができるようにします。例えば: ######
<form name="testform" action="/xxx"> 
<input type="hidden" name="jsessionid" value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764"> 
<input type="text"> 
</form>


実際、この手法は、アクションに URL 書き換えを適用することで簡単に置き換えることができます。

Cookie とセッションの違い:

1. Cookie データはクライアントのブラウザに保存され、セッション データはサーバーに配置されます。

2. Cookie はあまり安全ではありません。ローカルに保存された COOKIE を他人が解析して COOKIE を欺くことができるため、セキュリティを考慮してセッションを使用する必要があります。

3. セッションは一定期間内にサーバーに保存されます。アクセスが増加すると、サーバーのパフォーマンスがより多く消費されます。

サーバーのパフォーマンスを下げることを考慮して、COOKIE を使用する必要があります。

4. 1 つの Cookie によって保存されるデータは 4K を超えることはできません。サイトで保存できる Cookie は 20 個までです。

5. 個人的な提案:

ログイン情報などの重要な情報を SESSION として保存する
他の情報を保持する必要がある場合は、COOKIE に配置できます

この記事では、 Cookie とセッション 違いの詳細な説明については、php 中国語 Web サイトに関連するコンテンツを参照してください。

関連する推奨事項:


単純な PHP MySQL ページング クラス

再帰関数を使用しない 2 つのツリー配列構造

##HTMLをExcelに変換し、印刷・ダウンロード機能を実現

以上がCookieとセッションの違いを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。