ASPセッション



Session オブジェクトは、ユーザー セッション (セッション) に関する情報を保存したり、ユーザー セッション (セッション) の設定を変更したりするために使用されます。


セッション オブジェクト

コンピューター上でアプリケーションを操作するときは、アプリケーションを開いて変更を加えてから閉じます。それは会話によく似ています。コンピューターはあなたが誰であるかを知っています。アプリを開いたり閉じたりするタイミングを認識します。しかし、インターネットでは問題が発生します。HTTP アドレスは状態を維持できないため、Web サーバーはユーザーが誰で何をしているのかを知りません。

ASP は、ユーザーごとに一意の Cookie を作成することでこの問題を解決します。 Cookie はユーザーのコンピュータに転送され、ユーザーを識別する情報が含まれます。このインターフェースは Session オブジェクトと呼ばれます。

Session オブジェクトは、ユーザー セッション (セッション) に関する情報を保存したり、ユーザー セッション (セッション) の設定を変更したりするために使用されます。

Session オブジェクトに保存される変数には、単一ユーザーの情報が保存され、アプリケーション内のすべてのページで使用できます。セッション変数に保存される共通の情報は、通常、名前、ID、およびパラメーターです。サーバーは、新しいユーザーごとに新しいセッションを作成し、セッションの有効期限が切れると、Session オブジェクトを取り消します。


セッションはいつ始まりますか?

セッションは次の場合に開始されます:

  • 新しいユーザーが ASP ファイルをリクエストし、Global.asa ファイルが Session_OnStart サブルーチンを参照する

  • 特定の値がセッション変数に格納される

  • ユーザーが ASP ファイルをリクエストするASP ファイルが作成され、Global.asa は <object> タグを使用して、セッションのスコープを通じてオブジェクトをインスタンス化します


セッションはいつ終了しますか?

ユーザーが指定された時間内にアプリケーションのページをリクエストまたは更新しない場合、セッションは終了します。デフォルト値は 20 分です。

タイムアウト間隔をデフォルト値より短くまたは長く設定したい場合は、Timeout 属性を使用できます。

次の例では、5 分のタイムアウト間隔を設定します。

<%
Session.Timeout=5
%>

セッションをすぐに終了するには、Abandon メソッドを使用します。 %

セッション.放棄
%>

注: セッションを使用する場合の主な問題は、セッションをいつ終了するかです。ユーザーの最新のリクエストが最後のリクエストであるかどうかはわかりません。したがって、セッションをどれくらいの期間「存続」させるべきかわかりません。アイドル セッションを長時間待機すると、サーバー リソースが枯渇する可能性があります。ただし、セッションが途中で削除されると、サーバーがすべての情報を削除してしまうため、ユーザーは何度もやり直す必要があります。適切なタイムアウト間隔を見つけるのは難しい場合があります。

lamp.gifヒント: セッション変数には少量のデータのみを保存してください。


セッション変数の保存と取得

Session オブジェクトの最大の利点は、後続の Web ページの読み取りのために変数を保存できることであり、その適用範囲は非常に広いです。

次の例では、usernameという名前のセッション変数に「Donald Duck」を割り当て、ageという名前のセッション変数に「50」を割り当てます:

<%
Session("username") ="Donald Duck "
Session("age")=50
%>

値がセッション変数に保存されると、ASP アプリケーションのどのページでも使用できます:

Welcome <% Response.Write( Session("username"))%>

上記のコード行によって返される結果は、「よ​​うこそドナルドダック」です。

Session オブジェクトにユーザー パラメーターを保存し、これらのパラメーターにアクセスしてユーザーにどのページを返すかを決定することもできます。

次の例では、ユーザーが低いモニター解像度を使用している場合、ページのプレーン テキスト バージョンが返されることを規定しています:

<%If Session("screenres")="low" then%>
Thisページのテキスト バージョンです
<%Else%>
これはページのマルチメディア バージョンです
<%End If%>


セッション変数を削除します

Contents コレクションにはすべてのセッション変数が含まれています。

セッション変数は、Remove メソッドを通じて削除できます。

次の例では、セッション変数「age」の値が 18 未満の場合、セッション変数「sale」が削除されます:

<%
If Session.Contents("age")<18 then
Session .Contents.Remove("sale")
End If
%>

セッション内のすべての変数を削除するには、RemoveAll メソッドを使用してください:

<%
Session.Contents.RemoveAll()
% >


Contents コレクションを走査する

Contents コレクションにはすべてのセッション変数が含まれています。

<%
Session("username")="Donald Duck"
Session("age")=50

dim i
For Each i をループすることで、Contents コレクションに保存されている変数を表示できます。 in Session.Contents
Response.Write(i & "<br>")
Next
%>

Result:

username
age

コンテンツのコレクションでは、Count プロパティを使用できます:

<%
dim i
dim j
j=Session.Contents.Count
Response.Write("Session variables: " & j)
i=1 ~ j の場合
Response.Write(Session .Contents(i) & "<br>")
Next
%>

結果:

セッション変数: 2
ドナルドダック
50


ティックオブジェクトcollection

StaticObjects コレクションを反復処理して、Session オブジェクトに格納されているすべてのオブジェクトの値を表示できます:

<%
dim i
For Each i in Session.StaticObjects
Response.Write(i & "< ;br>")

%>