1) 現象: HTTP プロトコルは、同じブラウザーによって発行されたリクエストを完全に識別できません。
2)解決策:セッション状態の助けを借りて、Web サーバーは同じセッションに属する一連のリクエストと応答プロセスを関連付けることができます。
3)実装: ブラウザが発行する各リクエストメッセージを識別するように要求します。 この識別をセッションID(SessionID)と呼びます。
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 に基づいて対応するファイルを見つけます。保存するときは、最初にシリアル化してから書き込みます。
クライアントとサーバーの間で状態を維持するために使用されるソリューション
原則:
セッションを作成するときは、まずクライアントのリクエストにセッション識別子 (つまり 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);
1)セッション属性:
ページで指定されたセッション属性がデフォルトで true の場合、 WEB にアクセスする JSP ページを適用する場合、ページにはリクエストに関連付けられた Session オブジェクトが必要です。
それ以外の場合、JSP ページでは現在の JSP ページに関連付けられた Session オブジェクトが必要ではないため、JSP ページに初めてアクセスしたときにセッションは作成されません。
2) request.getSession(boolean flag):
true、現在の JSP ページに関連付けられた HttpSession オブジェクトが既に存在する場合、それが返されます。そうでない場合は、新しい戻り値が作成されます。
false、現在の JSP ページに関連付けられた HttpSession オブジェクトがない場合は null を返し、それ以外の場合は取得した HttpSession オブジェクトを返します。
request.getSession() は request.getSession(true) と同等です。
1) HttpSession の validate() メソッドを呼び出します。
2) HttpSession は有効期限が過ぎると自動的に破棄されます。Tomcat の web.xml ファイルでセッションの最大経過時間を分単位で設定できます。
りー
相关方法签名:
int getMaxInactiveInterval() //返回最大时效,单位:秒
void setMaxInactiveInterval(int interval) //设置最大时效
3)服务器卸载当前 WEB 应用。
String getId() //得到sessionID
boolean isNew() //该session是不是新创建的
long getCreationTime() //该session被创建的时间
long getLastAccessedTime() //该session最后一次被访问的时间
void setAttribute(String key, Object value) //存放值,相当于哈希表
Object getAttrbute(String key) //根据键从session中取得对应的值
方法签名:String encodeURL(String url) //该方法会在URL后面加上sessionID
重新登录
重新登录
以上がCookieとセッションのセッションとセッション状態の説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。