目次
1. セッションの概要" >1. セッションの概要
2. セッションの作成" >2. セッションの作成
4.Session相关方法" >4.Session相关方法
5.URL重写实现Session跟踪" >5.URL重写实现Session跟踪
ホームページ Java &#&チュートリアル Cookieとセッションのセッションとセッション状態の説明

Cookieとセッションのセッションとセッション状態の説明

Jul 17, 2017 pm 02:30 PM
セッション

1. セッションの概要

1) 現象: HTTP プロトコルは、同じブラウザーによって発行されたリクエストを完全に識別できません。

2)

解決策:セッション状態の助けを借りて、Web サーバーは同じセッションに属する一連のリクエストと応答プロセスを関連付けることができます。

3)実装: ブラウザが発行する各リクエストメッセージを識別するように要求します。 この識別をセッションID(SessionID)と呼びます。

2. Cookie

1: Cookie には次の 2 種類があります:

1> セッション Cookie (セッション Cookie)

有効期限が設定されていない場合、Cookie はライフ サイクルは次のとおりです。ブラウザ セッション中、Cookie はブラウザ ウィンドウを閉じるとすぐに消えます。

存続期間はブラウザーセッションです。

通常、ハードディスクではなくメモリに保存されます。

2>永続 Cookie (永続 Cookie)

有効期限が設定されている場合、ブラウザを閉じて再度開いた後も、これらの Cookie は設定された有効期限が経過するまで有効です。超えた。

ユーザーのハードドライブに保存され、同じブラウザで取得できます。

2: セッション関連の知識

2.1: セッションとは何ですか?

セッションは、ユーザーごとに変数の値を保存するメカニズムです。セッションは Cookie または URL の書き換えに基づいています。セッションは機能します

client————>1.request————————->server

2. session_start();

|<————-3.reponse( SESSION_ID) <——–|

|————->4.request(SESSION_ID)————>|

応答(SESSION_ID)<————|

|———— ->7. request(SESSION_ID + logout)–>|

8. session_destroy();

|<————- 9. 応答(Cookieファイルの削除)<——-|

クライアントはWebページを開き、サーバーにリクエストを送信します。クライアントに対応するCookieファイルがないため、SESSION_IDはリクエストで送信されません

サーバーはクライアントからリクエストを受信した後、それを受け入れます。セッションの処理は、まず session_start() 関数を実行することによって開始されます。まず、リクエストに SESSION_ID があるかどうかを確認し、存在する場合は、SESSION_ID を含むファイルを呼び出し、その情報を $ に書き込みます。 _SESSION を取得し、sess_ で始まるファイルに保存します。

書き込まれた情報の $_SESSION パラメータをクライアントに送り返します。クライアントはサーバーから送信された情報を取得した後、その情報を Cookie に保存します。

クライアントはCookie内のSESSION_IDをヘッダーに書き込み、再度サーバーにリクエストを送信します。操作 1 ~ 3 を繰り返します

クライアントはログアウト要求を発行します

サーバーが要求を受け入れた後、session_destroy() 関数を実行してセッション ファイルの削除を開始します

サーバーはクライアントに保存された Cookie ファイルを削除するコマンドを発行しますクライアント上: setcookie( session_name(), ”, time()-60, '/');

2.3: 注

通常、複数のウィンドウ間で使用することはできませんが、セッション ID は永続的な Cookie に保存されます。そして、新しいウィンドウから読み取ります。セッション ID を取得して、クロスウィンドウでの使用を実現できます。

ビュー数が多い Web サイトでは、セッションは安全ではなく、重複したセッション ID が表示される可能性があります。必要な場合は、クライアントは自身のセッション ID を知っており、Javascript を通じてのみ読み取ることができます。

2.4 php の使用法と設定

Session_start(): セッションを開始する既存のセッションを返す前にブラウザは Session_start() を使用できません。そうでない場合は、php.ini で session.auto_start=1 を有効にすると、毎回 session_start() を呼び出す必要がなくなります。セッションを使用する時間。

session.auto_start=1 の場合、session_save_path (‘./t/’); は無効になります。後者のステートメントを最初に配置する必要があるためです。

2.5 PHP のセッション ストレージと処理能力を向上させる

;session.save_path = “N;MODE;/path” この設定により、セッション ストレージ ディレクトリのマルチレベル ハッシュを実行できます。ここで、「N」はディレクトリを意味します設定するレベル、

"MODE" はディレクトリの権限属性を表し、デフォルトは 600 です

2.6: マルチサーバー共有 php SESSION

1. NFS または Samba 共有メソッド。セッションを保存できるようにします。各サーバーでファイルをディスク共有する、この方法はシンプルで実現可能です。

2. データベースへの集中保存。これは、PHP が提供する session_set_save_handler() 関数を使用して再定義する、比較的一般的な実装方法です。

3: Cookie の知識

Cookie とは何ですか? Cookie はどのように機能するのでしょうか? Cookie は、ユーザーのリクエストやページとともに Web サーバーとブラウザーの間で受け渡される小さなテキスト情報です。 Cookie に含まれる情報は、ユーザーがサイトにアクセスするたびに Web アプリケーションによって読み取ることができます。 Cookie の仕組みの基本 ユーザーがサイト上のページに戻って URL www.*****.com を入力すると、ブラウザはローカル ハード ドライブ上でその URL に関連付けられた Cookie を探します。 Cookie が存在する場合、ブラウザはページリクエストとともにそれをサイトに送信します。 Cookie の用途は何ですか? 最も基本的な目的は次のとおりです: Cookie は、Web サイトが訪問者に関する情報を保存するのに役立ちます。より一般的には、Cookie は Web アプリケーションの継続性を維持する (つまり、「状態管理」を実行する) ための手段です。

1. クライアント実行プログラムは、サーバーにリクエスト結果を送信するように要求します。 2. セッションはメモリに保存され、プロセスと同時に存在するセッション Cookie です。この時点では、サーバーはセッション ファイルを保存しているため、時間を設定する必要があります。セッション ファイルを削除します
3. Cookie はローカル Cookie ファイルに一部の情報を保存し、Cookie ファイルはキーと値のペアを保存します。 Cookie ファイルは、ローカル コンピュータのシステム ディスクの Document および Settings/Username ディレクトリに保存されます。アクセスする Web サイトの名前が www.abc.com の場合、一般的に、Cookie ファイルの名前は username@abc.com です。フォルダーを開いて確認してください。あなたが言及した getName は、Cookie ファイルに保存されている Cookie のキー値を取得します。

セッションはサーバー側でユーザーセッションデータを維持するためのメソッドであり、対応するCookieはクライアント側でユーザーデータを維持するためのものであることがわかります。 HTTP プロトコルはステートレス プロトコルであり、サーバーが応答すると、ブラウザーとの接続が失われます。Netscape では、クライアントがページ間でデータを交換できるように、最初にブラウザーに Cookie が導入されました。多くのユーザーのデータはどうなるのでしょうか?
まず第一に、サーバーが識別できるように、各クライアントは一意の識別子を持っている必要があります。一意の識別には、Cookie または GET による指定の 2 つの方法を使用することをお勧めします。 PHP のデフォルト設定では、セッションの使用時に「PHPSESSID」という名前の Cookie が作成されます (php.ini の session.name 値を変更することで指定できます)。クライアントが Cookie を無効にしている場合は、セッション ID を渡すように指定することもできます。サーバー経由 (php.ini の session.use_trans_sid などのパラメーターを変更)。
サーバー側の session.save_path ディレクトリを見ると、sess_vv9lpgf0nmkurgvkba1vbvj915 に似たファイルが多数見つかります。これは実際には、クライアントがセッション ID を に渡します。ファイルを読み取るとき、サーバーはセッション ID に基づいて対応するファイルを見つけます。保存するときは、最初にシリアル化してから書き込みます。
クライアントとサーバーの間で状態を維持するために使用されるソリューション

2) メカニズム:

サーバー側で HTTP ステータス情報を維持するために使用されます。

3)

原則:

セッションを作成するときは、まずクライアントのリクエストにセッション識別子 (つまり sessionID) が含まれているかどうか、つまり cookie という名前のものが存在するかどうかを確認します。 「JESESSIONID」、その値がリクエスト内の sessionID である場合は、それを取得して使用します。

  • それ以外の場合は、この顧客のセッションを作成し、このセッションに関連付けられたセッション ID を生成し、set-cookie を使用してリクエストに渡します。その後、次回リクエストが発行されるときに、このセッション ID が Cookie として使用されます。 「JESESSIONID」値がセッションIDに渡されます。

  • 4) 保存方法: 最も一般的に使用される方法は、Cookie を使用して保存することです。ただし、cokkie が無効になっている場合は、保存のための別のメカニズムが必要です。 URL 書き換えなど: URL パスの末尾に sessionID を追加します。

    5)注: 通常はCookieで保存されるため、Cookieを永続化するとブラウザを再起動してもセッションIDを取得できます。

    //用持久化cookie保存sessionIDCookie cookie = new Cookie("JESESSIONID",session.getId());
    cookie.setMaxAge(20);
    response.addCookie(cookie);
    ログイン後にコピー

    2. セッションの作成

    1)セッション属性:

    • ページで指定されたセッション属性がデフォルトで true の場合、 WEB にアクセスする JSP ページを適用する場合、ページにはリクエストに関連付けられた Session オブジェクトが必要です。

    • それ以外の場合、JSP ページでは現在の JSP ページに関連付けられた Session オブジェクトが必要ではないため、JSP ページに初めてアクセスしたときにセッションは作成されません。

    2) request.getSession(boolean flag):

    • tru​​e、現在の JSP ページに関連付けられた HttpSession オブジェクトが既に存在する場合、それが返されます。そうでない場合は、新しい戻り値が作成されます。

    • false、現在の JSP ページに関連付けられた HttpSession オブジェクトがない場合は null を返し、それ以外の場合は取得した HttpSession オブジェクトを返します。

    • request.getSession() は request.getSession(true) と同等です。

    3. Session オブジェクトの破棄

    1) HttpSession の validate() メソッドを呼び出します。

    2) HttpSession は有効期限が過ぎると自動的に破棄されます。Tomcat の web.xml ファイルでセッションの最大経過時間を分単位で設定できます。

    りー

     

    相关方法签名:

    • int getMaxInactiveInterval()                         //返回最大时效,单位:秒

    • void setMaxInactiveInterval(int interval)      //设置最大时效

    3)服务器卸载当前 WEB 应用。

     

    4.Session相关方法

    String getId()                                                       //得到sessionID

    boolean isNew()                                                  //该session是不是新创建的

    long getCreationTime()                                       //该session被创建的时间

    long getLastAccessedTime()                              //该session最后一次被访问的时间

    void setAttribute(String key, Object value)         //存放值,相当于哈希表

    Object getAttrbute(String key)                           //根据键从session中取得对应的值

     

    5.URL重写实现Session跟踪

    方法签名:String encodeURL(String url)  //该方法会在URL后面加上sessionID

    重新登录
    ログイン後にコピー
    ログイン後にコピー
    重新登录
    ログイン後にコピー
    ログイン後にコピー

     

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

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

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

    AIヘンタイを無料で生成します。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    スタンバイ時の接続ステータス: 切断、理由: NIC 準拠 スタンバイ時の接続ステータス: 切断、理由: NIC 準拠 Feb 19, 2024 pm 03:15 PM

    「イベント ログ メッセージの接続ステータスには、スタンバイ: NIC 準拠により切断されました。というメッセージが表示されます。これは、システムがスタンバイ モードで、ネットワーク インターフェイス カード (NIC) が切断されていることを意味します。これは通常、ネットワークの問題ですが、他の問題が発生する可能性もあります。 「スタンバイ接続が切断される原因は何ですか?」 スタンバイ接続が切断される原因は何ですか? NIC に準拠していますか? Windows イベント ビューアに「ConnectivityStatusinStandby:DisConnected,Reason:NICCompliance」メッセージが表示された場合は、NIC またはネットワーク インターフェイス コントローラーに問題がある可能性があることを示しています。この状況は通常、

    モモステータスの設定方法 モモステータスの設定方法 Mar 01, 2024 pm 12:10 PM

    有名なソーシャル プラットフォームである Momo は、ユーザーに日常の社会的交流のための豊富な機能サービスを提供します。 Momo では、ユーザーは自分の生活状況を簡単に共有したり、友達を作ったり、チャットしたりすることができます。その中でも、設定ステータス機能は、ユーザーが現在の気分やステータスを他の人に示すことで、より多くの人々の注目とコミュニケーションを集めることができます。では、モモのステータスをどのように設定すればよいのでしょうか? 以下に詳しく説明します。 Momo にステータスを設定するにはどうすればよいですか? 1. Momo を開き、右下隅にある [More] をクリックし、[Daily Status] を見つけてクリックします。 2. ステータスを選択します。 3. 設定状況が表示されます。

    サーバーの状態を確認する方法 サーバーの状態を確認する方法 Oct 09, 2023 am 10:10 AM

    サーバーのステータスを表示する方法には、コマンド ライン ツール、グラフィカル インターフェイス ツール、監視ツール、ログ ファイル、リモート管理ツールなどがあります。詳細な紹介: 1. コマンド ライン ツールを使用します。Linux または Unix サーバーでは、コマンド ライン ツールを使用してサーバーのステータスを表示できます。2. グラフィカル インターフェイス ツールを使用します。グラフィカル インターフェイスを備えたサーバー オペレーティング システムの場合は、グラフィックス ツールを使用できます。システムによって提供されるインターフェース ツールを使用してサーバーの状態を表示する; 3. 監視ツールを使用する 特別な監視ツールを使用して、サーバーの状態をリアルタイムで監視することができます。

    Android スマートフォンの WhatsApp にオフラインで表示する方法 Android スマートフォンの WhatsApp にオフラインで表示する方法 Jul 14, 2023 am 08:21 AM

    「オフライン」に見せたいですか、それとも WhatsApp で自分の現在のステータスを友達と共有したくないですか?これを行うためのシンプルだが賢いトリックがあります。 WhatsApp の設定を調整して、現在のステータス (オフラインまたは最後に見た状態) が友達や他の人に表示されないようにすることができます。 WhatsAppのステータスバーにオフラインステータスを表示するにはどうすればよいですか?これは非常にシンプルで合理的なプロセスです。したがって、今すぐ以下の手順に従ってください。ステップ 1 – 携帯電話で WhatsApp を開きます。ステップ 2 – [⋮] をタップし、[設定] を開くことを選択します。ステップ 3 – プライバシー設定を開いてアクセスします。ステップ 4 – プライバシー ページで、[最終閲覧日とオンライン] 設定を開いてアクセスします。ステップ 5 – 「できる人」を変更します。

    Javaスレッドの5つの状態と状態遷移ルール​​の詳細説明 Javaスレッドの5つの状態と状態遷移ルール​​の詳細説明 Feb 19, 2024 pm 05:03 PM

    Java スレッドの 5 つの状態とその変換ルールについての深い理解 1. スレッドの 5 つの状態の概要 Java では、スレッドのライフサイクルは、新規状態 (NEW)、準備完了状態を含む 5 つの異なる状態に分割できます。 (RUNNABLE)、実行状態(RUNNING)、閉塞状態(BLOCKED)、終了状態(TERMINATED)。新しい状態 (NEW): スレッド オブジェクトが作成されると、そのオブジェクトは新しい状態になります。この時点で、スレッド オブジェクトはタスクを実行するのに十分なリソースを割り当てています。

    Slim フレームワークでセッションを使用してユーザーのログインとログアウトを実装する方法 Slim フレームワークでセッションを使用してユーザーのログインとログアウトを実装する方法 Jul 28, 2023 pm 11:21 PM

    Slim フレームワークでセッションを使用してユーザーのログインとログアウトを実装する方法の紹介: セッションは Web アプリケーションで一般的に使用されるテクノロジであり、ユーザーのログイン ステータスなどのユーザー関連データの保存と管理に使用できます。 Slim フレームワークは、軽量の PHP フレームワークとして、セッションを処理するためのシンプルな API を提供します。この記事では、Slim フレームワークでセッションを使用してユーザーのログインおよびログアウト機能を実装する方法を紹介します。まず Slim フレームワークをインストールするには、次のことを行う必要があります。

    Slim フレームワークでユーザー認証にセッションを使用する方法 Slim フレームワークでユーザー認証にセッションを使用する方法 Jul 28, 2023 pm 05:57 PM

    Slim フレームワークでのユーザー認証にセッション (Sessions) を使用する方法 Web アプリケーションでは、ユーザー認証は、許可されたユーザーのみが制限されたリソースにアクセスできるようにする重要な機能です。セッションは、ユーザー ID とステータス情報を保存することで、セッション全体にわたってユーザーの認証が維持されるようにする、一般的に使用される認証方法です。 Slim フレームワークは、セッションとユーザー認証を処理するための便利なツールとミドルウェアを提供します。以下では、Slim フレームワークでのセッションの使用方法を紹介します。

    素晴らしい説明: Dubbo はすでに Go 言語をサポートしていますか? 素晴らしい説明: Dubbo はすでに Go 言語をサポートしていますか? Mar 25, 2024 am 09:42 AM

    読者の皆様、今日は Dubbo の Go 言語について説明する記事をお届けします。 Dubbo は優れた分散サービス フレームワークとして広く使用されており、Java 言語でサポートされています。近年の Go 言語の急速な発展に伴い、多くの開発者は Dubbo がすでに Go 言語をサポートしているかどうかに強い関心を持っています。この記事では、Dubbo の Go 言語サポート、具体的な実装方法、コード例について詳しく説明します。

    See all articles