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

PHPにおけるCookieとセッションの違いとCookieとセッションの使い方の詳細な説明

怪我咯
怪我咯オリジナル
2017-07-10 10:06:081168ブラウズ

この記事では主に、PHP における Cookie と セッション の違いと、Cookie とセッションの使用方法の概要に関する関連情報を紹介します。非常に優れており、必要な友人は参考にすることができます

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

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

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

Cookie に

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

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


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


(セッションIDと呼ばれます)が含まれているかどうかを確認します。 ) これが含まれている場合、サーバーはセッション ID に従ってこのセッションを取得し、それを使用します (取得できない場合は、新しいセッションを作成します)。クライアントのリクエストにセッション ID が含まれていない場合、このクライアントのセッションを作成し、このセッションに関連付けられたセッション ID の値は、反復的でなく、偽造するパターンが簡単に見つからない

string である必要があります。このセッション 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 を使用して、ユーザー名とその他の情報を同時に保存するか、

設定ファイルに保存することをお勧めします。コードは次のとおりです。以下:

<sessionState timeout="2" mode="StateServer" />

セッション損失の問題を解決するには

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

3 . Cookieの有効期限の設定


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


Cookieの有効期限は2分です


4.このページでは、次のように判断できます:

if (Request.Cookies["httpCookie"] != null)
{
Session["admin"] = Request.Cookies["httpCookie"].Values["admin"].ToString();
}
if (Session["admin"] == null)
{
this.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert(&#39;请重新登 录&#39;);location.href=&#39;logins.aspx&#39;</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 はセッション内のすべてのデータをクリアするだけであり、セッションを終了しないため、セッションがタイムアウトしたときに、これらのメソッドは呼び出されず、セッションをアクティブに終了します。また、現在のセッションも自動的に終了します。

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とセッションの使い方の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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