Galileo Computing < openbook >
Galileo Computing - Programming the Net
Galileo Computing - Programming the Net


Einstieg in ASP.NET von Matthias Lohrer
Einstieg in ASP.NET
gp Kapitel 11 Der Status von Seiten, Sitzungen und Applikationen
  gp 11.1 Versteckte Felder in Formularen nutzen
  gp 11.2 Der Status einer Seite: Viewstate
    gp 11.2.1 Eigene Daten im Viewstate speichern
    gp 11.2.2 Den Anzeigestatus ein- und ausschalten
  gp 11.3 Der Status einer Sitzung: Session
    gp 11.3.1 Die Klasse HttpSessionState
    gp 11.3.2 Wie ASP.NET die Probleme des klassischen ASP löst
    gp 11.3.3 Übertragung der Session-ID: Cookie oder URL
    gp 11.3.4 Den Sitzungsstatus ein- und ausschalten
    gp 11.3.5 Den Sitzungsstatus konfigurieren
    gp 11.3.6 Session-Ereignisse verwenden
    gp 11.3.7 Objekte mit Session-Scope einbinden
    gp 11.3.8 Instanzen eigener Klassen in den Sitzungsdaten speichern
  gp 11.4 Cookies verwenden
  gp 11.5 Der Status einer Anwendung: Application
    gp 11.5.1 Den Zugriff auf anwendungsweite Daten synchronisieren
    gp 11.5.2 Beschränkungen von Application-Variablen


Galileo Computing

11.4 Cookies verwenden  toptop

ASP.NET verwaltet Cookies in Objekten vom Typ HttpCookieCollection. Request.Cookies liefert ein solches Objekt für diejenigen Cookies, die der Server vom Browser empfangen hat. Response.Cookies enthält diejenigen Cookies, die der Server zum Browser schicken wird. Für das einzelne Cookie steht die Klasse HttpCookie zur Verfügung. Hier wieder eine kleine Demonstration. cookie01.aspx setzt zwei Cookies.

<!-- cookie01.aspx --> 
<%@ Page Language="VB" Debug="True" Strict="True"  %>
<script runat="server">
Sub Page_Load (ByVal Sender As Object, _
               ByVal E As EventArgs)
   ' Erstes Cookie
   Dim keks1 As New HttpCookie ("Krümel 1", "abcdefg")
   Response.Cookies.Add (keks1)
   
   ' Cookie persistent speichern 
   Dim keks As HttpCookie = new HttpCookie _
                                ("Zuletzt besucht am")
   keks.Value = CStr(DateTime.Now())
   Dim dt As DateTime = DateTime.Now()
   ' 24 Stunden lang bleibt das Cookie gespeichert
   Dim ts As New TimeSpan(24,0,0)
   keks.Expires = dt.Add(ts)
   Response.Cookies.Add(keks)
End Sub
</script>
<html><head>
<title>Cookie-Demo, Cookies setzen</title></head>
<body><h3>Cookie-Demo, Cookies setzen</h3>
<p>Diese Seite setzt zwei Cookies</p>
<a href="cookie02.aspx">Zur Seite, die die 
Cookies wieder ausliest.</a>
</body></html>

Wenn Sie für die Eigenschaft Expires keinen Wert angeben, wird das Cookie gelöscht, sobald der Browser geschlossen wird. Wenn Sie eine Zeit in der Zukunft angeben, bleibt das Cookie persistent gespeichert, bis sein Verfallsdatum erreicht ist. cookie02.aspx liest die vorhandenen Cookies wieder aus (siehe Abbildung 11.16).

<!-- cookie02.aspx --> 
<%@ Page Language="VB" Debug="True" Strict="True"  %>
<script runat="server">
Sub Page_Load (ByVal Sender As Object, _
               ByVal E As EventArgs)
Dim keksColl As HttpCookieCollection
Dim i As Integer
Dim sb As New StringBuilder()

keksColl = Request.Cookies

sb.Append _
("<b>Cookie-Name = Cookie-Wert, Verfallsdatum</b><br>")
For i = 0 To keksColl.Count – 1
   sb.Append (keksColl(i).Name)
   sb.Append (" = ") 
   sb.Append (keksColl(i).Value)
   sb.Append (", ")
   sb.Append (keksColl(i).Expires.toString())
   sb.Append ("<br>")
Next 
ausgabe.innerHTML = sb.toString()
End Sub
</script>
<html><head><title>Cookie-Demo, Lesen</title></head>
<body><h3>Cookie-Demo, Lesen</h3>
<p>Diese Seite liest die vorhandenen Cookies.</p>
<p runat="server" id="ausgabe" />
</body></html>

Wenn Sie den Browser schließen, wieder öffnen und erneut cookie02.aspx aufrufen, wird nur noch das persistent gespeicherte Zuletzt besucht am-Cookie angezeigt.

Das Verfallsdatum zeigt auch bei dem persistent gespeicherten Zuletzt besucht am-Cookie das Datum 01.01.0001 00:00:00 und nicht das korrekte Verfallsdatum an. Ich weiß nicht, warum hier nicht das korrekte Verfallsdatum angezeigt wird.

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 11.16 Cookies werden in einer HttpCookieCollection gespeichert

Sie können einem Cookie auch mehrere Schlüssel-Wert-Paare zuweisen. Dafür verwenden Sie die Eigenschaft Values im Gegensatz zum einzelnen Wert von Value. Wenn ein Cookie diese Art der Datenspeicherung nutzt, liefert die Eigenschaft HasKeys True zurück.


Name Typ Beschreibung
Domain String Name der Domäne, der das Cookie zugeordnet ist. Standardwert ist die aktuelle Domäne.
Expires DateTime Verfallsdatum, bis zu dem das Cookie gültig ist
HasKeys Boolean True, wenn das Cookie über Unterschlüssel verfügt. Siehe auch Values.
Item(String) String Wert desjenigen Cookies, dessen Schlüssel im String übergeben wird. Default-Eigenschaft
Name String Name des Cookies
Path String Der virtuelle Pfad, der die Domain ergänzt
Secure Boolean Legt fest, ob ein Cookie ausschließlich über HTTPS übertragen werden soll
Value String Wert des Cookies
Values NameValueCollection Auflistung von Schlüssel-Wert-Paaren. HasKeys ist True, wenn hier Werte gespeichert sind.

Tabelle 11.3 Eigenschaften der Klasse HttpCookie


Eigenschaften
AllKeys String() Ein Array mit allen Cookienamen
Count Integer Anzahl enthaltener Cookies
Item(Integer) oder Item(String) HttpCookie Das einzelne Cookie über den numerischen Index oder über den Namen aufrufen
Keys NameObjectCollectionBase.KeysCollection Eine Collection mit allen Cookie-Schlüsseln
Methoden
Add(HttpCookie) Fügt ein Cookie hinzu
Clear() Entfernt alle Cookies aus der Auflistung
CopyTo(Array, Integer) Kopiert die Cookies in das Array ab der Integer-Position
GetKey(Integer) Liefert den Schlüssel des Cookies, dessen Indexposition genannt wird
Remove(String) Entfernt das Cookie, dessen Name genannt wird
Set (HttpCookie) Aktualisiert ein Cookie in der Auflistung

Tabelle 11.4 Mitglieder der Klasse HttpCookieCollection

  

Einstieg in VB.NET

VB.NET

Einstieg in C#

Visual C#

VB.NET und Datenbanken

Einstieg in XML




Copyright © Galileo Press GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de