ホームページ  >  記事  >  バックエンド開発  >  PHPにおけるCookieとセッションの違いの詳しい説明とCookieとセッションの使い方のまとめ_phpの例

PHPにおけるCookieとセッションの違いの詳しい説明とCookieとセッションの使い方のまとめ_phpの例

WBOY
WBOYオリジナル
2016-06-16 08:40:56865ブラウズ

具体的には、Cookie は「クライアント」に保存され、セッションは「サーバー」に保存されます

Cookie は http プロトコルを拡張することで実装されます

Cookie には主に、名前、値、有効期限、パス、ドメインが含まれます。

Cookie にライフサイクルが設定されていない場合、ブラウザを閉じると、この種の Cookie は通常、ハードディスクではなくメモリに保存されます。ライフサイクルが設定されている場合は、その逆になります。これらの Cookie は、設定された有効期限が経過するまで有効です。


セッションはハッシュテーブルのような形式で情報を保存します。


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


(セッション ID と呼ばれます) が含まれている場合、サーバーはセッション ID に従ってこのセッションを取得し、それを使用します (取得できない場合は、そのセッションが使用されます)。クライアントが要求した場合、セッション ID が含まれていない場合は、このクライアントのセッションを作成し、このセッションに関連付けられたセッション ID の値を、繰り返しまたは簡単ではない文字列にする必要があります。偽造のパターンを見つけるために、この応答でセッション ID がクライアントに返され、保存されます。このセッション ID を保存する方法には Cookie を使用できるため、対話プロセス中にブラウザーはルールに従ってこの ID をサーバーに自動的に送信できます。通常、この Cookie の名前は SEEESIONID に似ています。ただし、Cookie は人為的に無効にすることができるため、Cookie が無効になっている場合でもセッション ID をサーバーに戻す他のメカニズムが必要です。


メリットとデメリット:

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


2. Cookie はあまり安全ではありません。ローカルに保存されている Cookie を分析して騙す可能性があります。

セキュリティ上の理由からセッションを使用する必要があります。

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

サーバーのパフォーマンスを低下させるには、COOKIE を使用する必要があります。


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


5. 個人的な提案:

ログイン情報などの重要な情報をSESSIONとして保存します


他の情報を保持する必要がある場合は、COOKIE に配置できます

セッションと Cookie の使用の概要:

セッションと cookie は両方とも asp.Net の組み込みオブジェクトです。その違いについてはここでは詳しく説明しません。次に、より実用的なことについて説明します。


Web サイトには、ログインとログアウトという 2 つの機能があるバックエンド管理システムがあり、ログイン時にユーザーの情報を後で使用できるようにセッションまたは Cookie に保存することがよくあります。注意してください?


1. 機密性の低いものはセッションや Cookie に保存できますが、一部のブラウザでは Cookie の使用がサポートされていないため、保存します。ただし、セッションはサーバー内で簡単に失われる場合があるため、Cookie と組み合わせて使用​​できます。つまり、セッションが失われた場合でも、Cookie が設定した有効期間内であれば、Cookie を使用できます。再度使用される Cookie から値を取得してセッションに入れるため、セッションと Cookie を使用してユーザー名とその他の情報を同時に保存するか、設定ファイルに保存する方がよいでしょう


コードをコピー コードは次のとおりです:
1d248b2756c6238f665ec711ef793ea7


セッション損失の問題も解決できます


2. 長時間操作がなかった場合、バックグラウンド管理がセッションを無効にして再ログインすることを望みます。session.timeout=5 を使用できます。これは、他の操作がない場合を意味します。 5 分以内に無効になるか、設定ファイル

で 8d16a282d6b1276845bbebf466ffd687 を設定してください。

3. Cookie の有効期間の設定


httpCookie.Expires = DateTime.Now.AddMinutes(2);


クッキーの有効期限は 2 分間です


4. Web ページへのアクセス許可があるかどうかを判断する場合は、次のように判断できます。


if (Request.Cookies["httpCookie"] != null)
{
Session["admin"] = Request.Cookies["httpCookie"].Values["admin"].ToString();
}
if (Session["admin"] == null)
{
this.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('请重新登 录');location.href='logins.aspx'</script>");
}

ログアウトするときの対処法について説明しましょう

1. セッションと Cookie の値は、終了時にクリアする必要があります。次に、セッションのいくつかの方法の違いについて簡単に説明します。

Session.clear(): セッション内のすべてのセッション キー値をクリアすることを意味しますが、セッションはまだ存在しており、Session.RemoveAll()

と同等です。

Session[“admin”]=null: 指定したキーの値がクリアされて解放されることを示します。session[“admin”]=””とは異なります。クリアされますが、セッションは解放されません。 、これは session .Remove(“name”);

と同等です。

Session.Abandon() は現在の Session オブジェクトを削除し、次回は新しい Session になります。


主な違いは、Session.Abandon を使用する場合、Session_End メソッド (InProc モード) が呼び出されることです。 Session_Start メソッドは、次のリクエストが来たときに起動されます。 Session.Clear はセッション内のすべてのデータをクリアするだけであり、

は中止されません。

セッション。これらのメソッドは呼び出されません。このメソッドが呼び出されない場合、セッションがタイムアウトすると、Abandon メソッドが自動的に終了します。


2. Cookie をクリアする方法を見てみましょう


A. tpCookie cookie = System.Web.HttpContext.Current.Request.Cookies.Get("tuser");

cookie.Expires = DateTime.Now.AddDays(-1);

System.Web.HttpContext.Current.Response.Cookies.Add(cookie);

B. tpCookie httpCookie = Request.Cookies["httpCookie"];

httpCookie.Expires = DateTime.Now.AddDays(-1);

Response.Cookies.Add(httpCookie);

AB 両方の方法が使用可能

3. したがって、セッションの現在の値、つまり Session["admin']=null をクリアするだけです。上記の方法に従って Cookie をクリアするだけです


提案とコメント:

1. 終了するときに、時間を書き込むためのログアウト ページを作成できます。


2. どのような操作が実行される場合でも、If を使用して空かどうかを判断できる場合は、null ポインター例外の発生を防ぐために最善を尽くします。

上記は、PHP における Cookie とセッションの違いの詳細な説明と、編集者による Cookie とセッションの使用法の概要です。ご質問があれば、お気軽にお問い合わせください。メッセージ。編集者は全員にすぐに返信します。また、スクリプト ハウスの Web サイトをサポートしていただきありがとうございます。

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