Sessionオブジェクトは、に関する情報を格納する、またはユーザー・セッションの設定を変更します。
Sessionオブジェクト
お使いのコンピュータ上のアプリケーションで作業しているとき、あなたはそれを開いて、いくつかの変更を行い、その後、あなたはそれを閉じます。 これは、多くのセッションのようなものです。 コンピュータは、あなたが誰であるか知っています。 あなたはそれを閉じるときに、アプリケーションを開き、ときに知っています。 しかし、インターネット上で一つの問題があります:HTTPアドレスは、状態を維持しないため、Webサーバは、あなたが誰であるか、あなたは何をすべきかを知りません。
ASPは、各ユーザーに一意のクッキーを作成することで、この問題を解決します。 クッキーは、ユーザーのコンピュータに送信され、それが利用者を識別する情報が含まれています。 このインタフェースは、Sessionオブジェクトと呼ばれています。
Sessionオブジェクトは、に関する情報を格納する、またはユーザー・セッションの設定を変更します。
Sessionオブジェクトに格納された変数は、1人のユーザーに関する情報を保持し、1つのアプリケーション内のすべてのページにご利用いただけます。 セッション変数に保存されている一般的な情報には、名前、ID、および設定されています。 サーバは、それぞれの新しいユーザーの新しいSessionオブジェクトを作成し、セッションの有効期限が切れた時にSessionオブジェクトを破棄します。
セッションスタートはいつでしょうか?
セッションが開始したときに:
- 新しいユーザーは、ASPファイルを要求し、Global.asaファイルはとSession_OnStartの手順を含みます
- 値は、セッション変数に格納されます。
- ユーザは、ASPファイルを要求し、Global.asaファイルを使用し<object>セッションスコープを持つオブジェクトをインスタンス化するためにタグを
セッション終了はいつでしょうか?
ユーザーが指定した期間のためのアプリケーションのページを要求したりリフレッシュしていない場合、セッションは終了します。 デフォルトでは、これは20分です。
あなたはデフォルトより短いか長いタイムアウト間隔を設定したい場合は、使用してTimeoutプロパティを。
以下の例では、5分間のタイムアウト間隔を設定します。
<%
Session.Timeout=5
%>
使用Abandon直後にセッションを終了する方法を:
<%
Session.Abandon
%>
Note:彼らは終わるべきWHENセッションの主な問題点があります。 ユーザーの最後の要求が最終1かなかったのかどうかもわかりません。 だから我々は、我々は、セッションを維持する必要がありますどのくらいかわからない"alive" 。 アイドルセッションのためにあまりにも長い間待って、サーバー上のリソースを使用しますが、セッションがあまりにも早く削除された場合、サーバーはすべての情報を削除したため、ユーザーは、すべて最初からやり直す必要があります。 右のタイムアウト時間を見つけることは難しいことができます!
Tip:のみセッション変数で少量のデータを保存します!
セッション変数を格納および取得
Sessionオブジェクトに関する最も重要なことは、あなたがそれに変数を格納できることです。
以下の例では、セッション変数に設定されますusernameに"Donald Duck"とセッション変数ageに"50" :
<%
Session("username")="Donald Duck"
Session("age")=50
%>
値をセッション変数に格納されている場合には、ASPアプリケーション内の任意のページから到達することができます。
Welcome <%Response.Write(Session("username"))%>
戻って上記の行: "Welcome Donald Duck" 。
また、Sessionオブジェクトにユーザー設定を保存し、ユーザに戻るには、どのページを選択するために、その好みにアクセスすることができます。
ユーザーが低い画面解像度を持っている場合は、以下の例では、ページのテキストのみのバージョンを指定しています。
<%If Session("screenres")="low" Then%>
This is the text version of the page
<%Else%>
This is the multimedia version of the page
<%End If%>
セッション変数を削除します
目次コレクションは、すべてのセッション変数が含まれています。
Removeメソッドでセッション変数を除去することが可能です。
以下の例では、セッション変数削除"sale"セッション変数の値があれば"age" 18未満です。
<%
If Session.Contents("age")<18 then
Session.Contents.Remove("sale")
End If
%>
セッション内のすべての変数を削除するには、REMOVEALLメソッドを使用します。
<%
Session.Contents.RemoveAll()
%>
目次コレクションをループ
目次コレクションは、すべてのセッション変数が含まれています。 あなたは目次コレクションをループは、それに保存されているかを確認することができます。
<%
Session("username")="Donald Duck"
Session("age")=50
dim i
For Each i in Session.Contents
Response.Write(i & "<br>")
Next
%>
結果:
username
age
あなたがコンテンツコレクション内の項目数がわからない場合は、Countプロパティを使用することができます。
<%
dim i
dim j
j=Session.Contents.Count
Response.Write("Session variables: " & j)
For i=1 to j
Response.Write(Session.Contents(i) & "<br>")
Next
%>
結果:
Session variables: 2
Donald Duck
50
StaticObjectsコレクションをループ
あなたはStaticObjectsコレクションをループ、Sessionオブジェクトに格納されているすべてのオブジェクトの値を参照するには次のことができます。
<%
dim i
For Each i in Session.StaticObjects
Response.Write(i & "<br>")
Next
%>