ホームページ  >  記事  >  バックエンド開発  >  PHP セッションと Cookie の概要の共有

PHP セッションと Cookie の概要の共有

小云云
小云云オリジナル
2018-03-12 11:48:381312ブラウズ

この記事では主に PHP セッションと Cookie の概要を説明します。お役に立てれば幸いです。

1. Cookie とセッションの関係
Cookie とセッションのソリューションはそれぞれクライアントとサーバーに属しますが、サーバーのセッションの実装はクライアントの Cookie に依存します。手順は大まかに次のとおりです。セッション メカニズムを実行します
2. 対応する一意の session_id を生成します (この session_id を解析して処理することで、サーバーはセッションによって保存されたファイルを見つけて、ファイルからセッション情報を抽出できます)

3サーバーはこの session_id をクライアントに送信します
クライアントは session_id を受け取り、それをストレージ コンテナーとして Cookie とともに保存します
4. クライアントはリクエストを行うたびにこの session_id をサーバーに渡します
サーバーは次のようにしてセッションを解析します。それ自体

注: セッション内の情報を保存するには、キャッシュ、データベース、ファイルなど、さまざまな方法がありますが、デフォルトではファイル形式で保存されます。 。 。

2. セッションの作成と破棄のタイミング

セッションを作成すると、Cookie が作成されます。その MaxAge は、メモリ内にのみ存在できることを意味します。ブラウザで Cookie が無効になっている場合でも、この Cookie は作成されます。
ブラウザによって送信されたリクエストに jsessionid パラメータまたは Cookie ヘッダーが含まれている場合、コンテナは新しいセッションを作成せず、関連付けのために以前のセッションのみを検索します。ここには 2 つの状況があります:
1) jsessionid を使用します。この値が既存のセッションに対応する場合、新しいセッションは作成されません。それ以外の場合は、新しいセッションが作成されます。
2) Cookieを使用します。この値が既存のセッションに対応する場合、新しいセッションは作成されませんが、それに対応するセッションがない場合 (上記のサーバーを再起動した後など)、コンテナは Cookie 情報に基づいて対応するセッションを復元します。以前も同じでした。
3. セッションはいつ破棄されますか?

ブラウザを閉じて再度開き、サーバーに接続すると、サーバーは新しいセッションを割り当てます。つまり、新しいセッションが開始されます。では、元のセッションは破棄されたのでしょうか?小さな実験をしました:

セッションを作成します:

session_start();//セッション変数を登録し、$_SESSION["username"] = "hello"を割り当てます//生成された session_idecho session_id();


ページにアクセスしてセッションを作成し、session_id を取得して、ブラウザを閉じます。

session_id に基づいてセッション オブジェクトを作成します

$session_id = "qpk6onnn3husvotnke030ftcm4";
session_id($session_id);
session_start();
echo $_SESSION["username"];  //结果取出session

ので、ブラウザを閉じても、元のセッションは破棄されません (destroy メソッド)。は実行されません)が、タイムアウトまで待機します。期限切れになると、セッションは破棄されます。ブラウザを閉じると、クライアントのメモリ内の元のセッションに関連する Cookie のみが消去されます。接続するためにブラウザを再度開いた場合、ブラウザは Cookie 情報を送信できないため、サーバーはそれが新しいセッションであると認識します。したがって、ブラウザを閉じたときにクリーンアップしたいセッションに関連付けられた特定のリソース (一時ファイルなど) がある場合は、セッションが自動的に終了するのを待つのではなく、特定のリクエストをサーバーに送信する必要があります。クリーンアップ。


関連する推奨事項:

phpはHTMLにセッションとCookieを加えたメンバーログイン登録ページを実装します

はPHPでセッションとCookieのデータ値転送関数を実装します

phpはセッションとCookieの違いを学習します

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

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