ASP - Sitzungsobjekt


Ein Sitzungsobjekt speichert Informationen über oder Änderungseinstellungen für eine Benutzersitzung.


Das Session-Objekt

Wenn Sie mit einer Anwendung auf Ihrem Computer arbeiten, öffnen Sie sie, nehmen einige Änderungen vor und schließen sie dann. Dies ist ähnlich wie eine Sitzung. Der Computer weiß, wer Sie sind. Es weiß, wann Sie die Anwendung öffnen und wann Sie sie schließen. Im Internet gibt es jedoch ein Problem: Der Webserver weiß nicht, wer Sie sind und was Sie tun, weil die HTTP-Adresse den Status nicht behält.

ASP löst dieses Problem, indem für jeden Benutzer ein eindeutiges Cookie erstellt wird. Das Cookie wird an den Computer des Benutzers gesendet und enthält Informationen, die den Benutzer identifizieren. Diese Schnittstelle wird als Session-Objekt bezeichnet.

Das Session-Objekt speichert Informationen über oder Änderungseinstellungen für eine Benutzersitzung.

In einem Session-Objekt gespeicherte Variablen enthalten Informationen über einen einzelnen Benutzer und sind für alle Seiten in einer Anwendung verfügbar. Allgemeine Informationen, die in Sitzungsvariablen gespeichert werden, sind Name, ID und Einstellungen. Der Server erstellt für jeden neuen Benutzer ein neues Sitzungsobjekt und zerstört das Sitzungsobjekt, wenn die Sitzung abläuft.


Wann beginnt eine Sitzung?

Eine Sitzung beginnt, wenn:

  • Ein neuer Benutzer fordert eine ASP-Datei an, und die Datei Global.asa enthält eine Session_OnStart-Prozedur
  • Ein Wert wird in einer Session-Variablen gespeichert
  • Ein Benutzer fordert eine ASP-Datei an, und die Datei Global.asa verwendet das Tag <object>, um ein Objekt mit Sitzungsbereich zu instanziieren

Wann endet eine Sitzung?

Eine Sitzung endet, wenn ein Benutzer für einen bestimmten Zeitraum keine Seite in der Anwendung angefordert oder aktualisiert hat. Standardmäßig sind dies 20 Minuten.

Wenn Sie ein Timeout-Intervall festlegen möchten, das kürzer oder länger als der Standardwert ist, verwenden Sie die Timeout- Eigenschaft.

Das folgende Beispiel legt ein Timeout-Intervall von 5 Minuten fest:

<%
Session.Timeout=5
%>

Verwenden Sie die Abandon- Methode, um eine Sitzung sofort zu beenden:

<%
Session.Abandon
%>

Hinweis: Das Hauptproblem bei Sitzungen ist, WANN sie enden sollten. Wir wissen nicht, ob die letzte Anfrage des Benutzers die letzte war oder nicht. Wir wissen also nicht, wie lange wir die Session „am Leben“ halten sollen. Zu langes Warten auf eine Leerlaufsitzung verbraucht Ressourcen auf dem Server, aber wenn die Sitzung zu früh gelöscht wird, muss der Benutzer wieder von vorne beginnen, weil der Server alle Informationen gelöscht hat. Es kann schwierig sein, das richtige Timeout-Intervall zu finden!

Tipp: Speichern Sie nur KLEINE Datenmengen in Session-Variablen!



Sitzungsvariablen speichern und abrufen

Das Wichtigste am Session-Objekt ist, dass Sie darin Variablen speichern können.

Im folgenden Beispiel wird der Benutzername der Sitzungsvariablen auf „Donald Duck“ und das Alter der Sitzungsvariablen auf „50“ gesetzt:

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

Wenn der Wert in einer Session-Variablen gespeichert ist, kann er von JEDER Seite in der ASP-Anwendung erreicht werden:

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

Die obige Zeile gibt zurück: "Welcome Donald Duck".

Sie können auch Benutzereinstellungen im Session-Objekt speichern und dann auf diese Einstellung zugreifen, um auszuwählen, welche Seite an den Benutzer zurückgegeben werden soll.

Das folgende Beispiel gibt eine Nur-Text-Version der Seite an, wenn der Benutzer eine niedrige Bildschirmauflösung hat:

<%If Session("screenres")="low" Then%>
  This is the text version of the page
<%Else%>
  This is the multimedia version of the page
<%End If%>

Sitzungsvariablen entfernen

Die Contents-Sammlung enthält alle Sitzungsvariablen.

Es ist möglich, eine Sitzungsvariable mit der Remove-Methode zu entfernen.

Das folgende Beispiel entfernt die Session-Variable „sale“, wenn der Wert der Session-Variable „age“ kleiner als 18 ist:

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

Um alle Variablen in einer Sitzung zu entfernen, verwenden Sie die RemoveAll-Methode:

<%
Session.Contents.RemoveAll()
%>

Durchlaufen Sie die Inhaltssammlung

Die Contents-Sammlung enthält alle Sitzungsvariablen. Sie können die Inhaltssammlung durchlaufen, um zu sehen, was darin gespeichert ist:

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

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

Ergebnis:

username
age

Wenn Sie die Anzahl der Elemente in der Contents-Sammlung nicht kennen, können Sie die Count-Eigenschaft verwenden:

<%
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
%>

Ergebnis:

Session variables: 2
Donald Duck
50

Durchlaufen Sie die StaticObjects-Auflistung

Sie können die StaticObjects-Sammlung durchlaufen, um die Werte aller Objekte anzuzeigen, die im Session-Objekt gespeichert sind:

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