Cookies i ASP

Tags:    asp
Skrevet af Bruger #544 @ 19.02.2002
Anvendelse af cookies i ASP

Til dem som ikke ved hvad cookies egentlig er; Cookies er små stykker information, der udveksles mellem brugeren og serveren, og som identificerer brugeren over for serveren.

Der findes to typer cookies: sessioncookies og permanente cookies. Den første type er midlertidig og eksisterer kun, så længe browservinduet er åbent. Den anden type opbevares på brugerens harddisk, og fjernes først ved en fastsat udløbsdato. Permanente cookies bruges bl.a. til personlig identifikation på f.eks. Udvikleren.dk og The Helpers.

Nå, nu skal vi til koderiet. En cookie oprettes ved hjælp af Response-funktionen.

Oprettelse af sessioncookie

Her er den simpleste metode til at oprettte en cookie ved navn "Cookie" og med værdien "Chip":
Response.Cookies("Cookie") = "Chip"
Bemærk! Cookien indeholder ikke nogen udløbsinformationer, og gøres dermed automatisk til en sessionscookie.

Koden nedenfor viser et komplet eksempel på anvendelsen af Response.Cookies:
<% @language = VBScript %>
<%
  Response.Cookies("Asp1") = "En cookie!"
%>
<html>
<body>
En simpel Cookie!
</body>
</html>
Der vil nu hver gang brugeren åbner dette dokument blive gemt en midlertidig cookie ved navn "Cookie" på computeren. Den vil dog blive slettet i det øjeblik brugeren lukker browservinduet, netop fordi det er en sessioncookie.

Oprettelse af permanent cookie

I forbindelse med f.eks. Udvikleren.dk er det jo meget praktisk ikke at skulle logge sig ind hver gang man besøger siden. Dertil kan man bruge permanente cookies som bibeholdes indtil en udløbsdato.

Men man behøves ikke engang at sætte en fast udløbsdato på cookien. Man kan også bare lade cookien udløbe et bestemt stykke tid efter den aktuelle dato.
Eksempelvis en måned:
<%
 Response.Cookies("TidsCookie") = "31 dage"
 Response.Cookies("TidsCookie").Expires = DateAdd("m",1,Now())
%>
Analyse: Egenskaben Expires gør det muligt at angive en udløbsdato for en cookie. Bemærk dog at udløbsdatoen fornyes til en måned efter det aktuelle tidspunkt, hver gang siden kaldes på ny.
Desuden præsenteres cookien for den udstedende server, hver gang der sendes en forespøgsel til siden.

Anvendelse af cookie-ordbøger

Det ville ikke være specielt praktisk, hvis man kun kunne opbevare én værdi-streng i en cookie. Men selvfølgelig er det også muligt. "Cookies"-variablen understøtter en ordbogs-funktion for hver cookie, hvilket gør det muligt at opbevare flere værdier i hver cookie.
Eksempel:
<%
 Response.Cookies("MinCookie")("Preference") = "Danish Chip"
 Response.Cookies("MinCookie")("ChosenWhen") = CStr(Now())
 Response.Cookies("MinCookie").Domain = "udvikleren.dk"
 Response.Cookies("MinCookie").Path = "/7/"
 Response.Cookies("MinCookie").Secure = False
%>
Analyse: Læg mærke til det domæne, der angives til "udvikleren.dk". Når du angiver et domæne, fortæller du browseren, hvilket sites cookien skal præsenteres for. I dette tilfælde, det fantastiske site Udvikleren.dk.
Stien er en anden vigtig ting på en cookie. Den angiver cookien til kun at begrænse sig til den forestående sti på web-serveren.
Den sidste linje kode har med selve krypteringen af cookien at gøre. Cookies er som stadnard ikke sikre (i browseren), og man bør som hovedregel undgå at sende og opbevare følsomme informationer på klienten.

Læsning af cookies

Cookies bruges som sagt til at identificere brugere, som besøger web-serveren flere gange. Indtil nu har vi imidlertid kun beskæftiget os med at sende cookies til brugeren. I dette afsnit vil du lære, hvordan man læser cookies informationer.

Lad os kigge på cookien Min Cookie fra det foregående eksempel - Hvordan kan du læse værdien i nøglen ("Preference")?
Løsningen er simpelthen:
<%= Request.Cookies("MinCookie")("Preference") %>
På denne måde udtrækkes cookiens værdi, som i dette tilfælde er "Danish Chip", og skrives til brugeren.

Men hvordan kan man nu skelne mellem en "ordbog" og en enkelt værdi? Løsningen på dette problem er "Cookies"-variablens egenskab HasKeys.

Komplet eksempel (Husk! Du skal IKKE skrive linjenumrene med):
1:  <% @language = VBScript %>
2:  <% Option Explicit %>
3:  <html>
4:  <body>
5:  <%
6:  Dim cookie, key
7:  For Each cookie In Request.Cookies
8:    If Not Request.Cookies(cookie).HasKeys Then
9:        Response.Write cookie & " = " & _
10:       Request.Cookies(cookie) & "<br>"
11:   Else
12:     For Each key In Request.Cookies(cookie)
13:       Response.Write cookie
12:       Response.Write "(" & key & ")"
13:       Response.Write " = "
14:       Response.Write Request.Cookies(cookie)(key)
15:       Response.Write "<br>" & vbCrlf
16:     Next
17:   End If
18: Next
19: %>
20: </body>
21: </html>
Output: Hvis du kører dette eksempel lige EFTER du har kørt eksemplet forinden (det kan dog være nødvendigt at ændre egenskaberne Domain og Path), vil outputtet se ud omtrent som følger:
MinCookie(PREFERENCE) = "Danish Chip"
MinCookie(CHOSENWHEN) = 27/1/02 12:29:45 PM
Analyse: Ved hjælp af en For...Each-løkke itereres der over samlingen Request.Cookies (linjerne 7 og 20). I linje 8 bruges egenskaben HasKeys til at afgøre, om der er tale om en enkelt værdi eller om en ordbog.
If Not Request.Cookies(cookie).HasKeys Then
Den første gren (linje 8) tager sig af enkeltværdien. Den anden, som tager sig af ordbogen, starter i linje 12. Er bruges endnu en For...Each-løkke til at iterere over alle nøgleværdier.

Hensigten med eksemplet i dette afsnit er at vise, hvordan du kan håndtere cookies på en effektiv måde. Hvis du kender navnene på dine cookies og nøgler, kan du imidlertid udmærket bruge den simple løsning, som blev præsenteret i begyndelsen.

Afslutning

Nu har du lært det grunlæggende i Cookies og hvordan du kan præsentere dem i ASP.
Her til sidst i denne artikel vil jeg afslutte med at sige disse korte ord: God Fornøjelse! :-D



Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

Del også gerne artiklen med dine Facebook venner:  

Kommentarer (0)

Du skal være logget ind for at skrive en kommentar.
t