ASP SessionObject
Das Session-Objekt wird verwendet, um Informationen über eine Benutzersitzung zu speichern oder Einstellungen für eine Benutzersitzung zu ändern.
Session-Objekt
Wenn Sie an einer Anwendung auf Ihrem Computer arbeiten, öffnen Sie sie, nehmen Änderungen vor und schließen sie dann. Dies ähnelt stark einer Session. Der Computer weiß, wer Sie sind. Er weiß, wann Sie die Anwendung öffnen und schließen. Im Internet tritt jedoch ein Problem auf: Da HTTP-Adressen keinen Status beibehalten können, weiß ein Webserver nicht, wer Sie sind oder was Sie tun.
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 wird verwendet, um Informationen über eine Benutzersitzung zu speichern oder Einstellungen für eine Benutzersitzung zu ändern.
Variablen, die im Session-Objekt gespeichert sind, speichern Informationen über einen einzelnen Benutzer und stehen allen Seiten in einer Anwendung zur Verfügung. Häufig in Session-Variablen gespeicherte Informationen sind normalerweise Name, ID und Parameter. Der Server erstellt für jeden neuen Benutzer eine neue Session und zerstört das Session-Objekt, wenn die Session abläuft.
Wann beginnt eine Session?
Eine Session beginnt, wenn:
- Ein neuer Benutzer fordert eine ASP-Datei an und die Datei Global.asa verweist auf die Unterroutine Session_OnStart
- Ein Wert wird in einer Session-Variablen gespeichert
- Ein Benutzer fordert eine ASP-Datei an und Global.asa verwendet das Tag <object>, um ein Objekt mit Session-Gültigkeitsbereich zu instanziieren
Wann endet eine Session?
Wenn ein Benutzer innerhalb eines bestimmten Zeitraums keine Seite innerhalb der Anwendung anfordert oder aktualisiert, endet die Session. Der Standardwert beträgt 20 Minuten.
Wenn Sie das Timeout-Intervall kürzer oder länger als den Standardwert einstellen möchten, können Sie die EigenschaftTimeoutverwenden.
Das folgende Beispiel legt ein Timeout-Intervall von 5 Minuten fest:
Session.Timeout=5
%>
Um eine Session sofort zu beenden, verwenden Sie die MethodeAbandon:
Session.Abandon
%>
Hinweis:Das Hauptproblem bei der Verwendung von Sessions ist die Frage, wann sie enden sollten. Wir wissen nicht, ob die letzte Anfrage des Benutzers die finale Anfrage ist. Daher wissen wir nicht, wie lange wir die Session "am Leben" halten sollen. Zu langes Warten auf eine inaktive Session kann die Ressourcen des Servers erschöpfen. Wenn die Session jedoch zu früh gelöscht wird, müssen Benutzer immer wieder von vorne beginnen, da der Server bereits alle Informationen gelöscht hat. Das Finden des geeigneten Timeout-Intervalls ist schwierig!
Tipp:Speichern Sie nur eine kleine Menge Daten in Session-Variablen!
Session-Variablen speichern und abrufen
Der größte Vorteil des Session-Objekts besteht darin, dass darin Variablen gespeichert werden können, die von späteren Seiten gelesen werden können, und es ein breites Anwendungsspektrum hat.
Das folgende Beispiel weist einer Session-Variablen namensusernameden Wert "50" zuage:
Session("username")="Donald Duck"
Session("age")=50
%>
Wenn ein Wert in einer Session-Variablen gespeichert wird, kann er von jeder Seite in der ASP-Anwendung verwendet werden:
Das von der obigen Codezeile zurückgegebene Ergebnis ist: "Welcome Donald Duck".
Sie können auch Benutzereinstellungen im Session-Objekt speichern und dann auf diese Einstellungen zugreifen, um zu entscheiden, welche Seite an den Benutzer zurückgegeben werden soll.
Das folgende Beispiel legt fest, dass wenn der Benutzer eine niedrige Bildschirmauflösung verwendet, eine Nur-Text-Version der Seite zurückgegeben wird:
Dies ist die Textversion der Seite
<%Else%>
Dies ist die Multimedia-Version der Seite
<%End If%>
Session-Variablen entfernen
Die Contents-Auflistung enthält alle Session-Variablen.
Session-Variablen können mit der Remove-Methode entfernt werden.
Im folgenden Beispiel wird die Session-Variable "sale" entfernt, wenn der Wert der Session-Variablen "age" kleiner als 18 ist:
If Session.Contents("age")<18 then
Session.Contents.Remove("sale")
End If
%>
Um alle Variablen in der Session zu entfernen, verwenden Sie die RemoveAll-Methode:
Session.Contents.RemoveAll()
%>
Durchlaufen der Contents-Collection
Die Contents-Auflistung enthält alle Session-Variablen. Sie können die darin gespeicherten Variablen anzeigen, indem Sie die Contents-Auflistung durchlaufen:
Session("username")="Donald Duck"
Session("age")=50
dim i
For Each i in Session.Contents
Response.Write(i & "<br>")
Next
%>
Ergebnis:
age
Wenn Sie die Anzahl der Elemente in der Contents-Auflistung 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:
Donald Duck
50
Durchlaufen der StaticObjects-Collection
Sie können die Werte aller im Session-Objekt gespeicherten Objekte anzeigen, indem Sie die StaticObjects-Sammlung durchlaufen:
dim i
For Each i in Session.StaticObjects
Response.Write(i & "<br>")
Next
%>
Weitere Erweiterungen