Som besøgende på et websted, foretager man sig en række forskellige ting. Man klikker fra dokument til dokument, måske udfylder man også en formular, eller køber en vare.
Som webudvikler kan sådanne informationer om hvad brugeren i løbet af besøget foretager sig, være af stor betydning for at udvikle succesfulde webløsninger.
Lad os f.eks. sige at man vil lave et websted, hvor nogle dokumnter er beskyttet med password og login. For at gøre denne beskyttelse effektiv, må man på de beskyttede dokumenter have adgang til information om hvorvidt brugeren på et tidligere tidspunkt loggede sig korrekt ind eller ej. Man må med andre ord have mulighed for at "huske" hvad brugeren gjorde tidligere i forløbet.
Og det er netop hvad denne lektion omhandler - hvordan man med Sessions i ASP kan gemme og hente oplysninger i løbet af en brugers besøg på et websted.
ASP
Session objektet giver dig mulighed for at administrere information om en brugers session. Du kan skrive smarte applikationer, som kan identificere og samle information om brugere.
En session kan begynde på flere måder. Vi vil ikke gå i tekniske detaljer på nuværende tidspunkt, men hæfte os ved det tilfælde, hvor en session starter ved at en værdi gemmes i Session objektet. En session slutter hvis en bruger ikke har requestet sider i et givent tidsrum, som standard 20 minutter. Men der er naturligvis også mulighed for at man kan slutte en session i sine scripts.
Lad os sige at 50 personer samtidigt klikker sig rundt på det samme websted - f.eks. en butik. Oplysningerne om hvad deres indkøbskurve indeholder, kan med fordel gemmes i session objektet. For at kunne identificere brugerne i forhold til hinanden, benytter serveren et unikt bruger ID, som gemmes i en en HTTP cookie (en lille tekstfil på brugerens PC - mere om cookies i lektion 13). Brug af Sessions kræver derfor at understøttelse af cookies er slået til i brugerens browser.
Da du requestede denne side gemte jeg det aktuelle tidspunkt i en session. Det gjorde jeg fordi jeg nu kan vise dig et eksempel på hvordan det virker.
Jeg valgte at kalde elementet for "Starttidspunkt" - og gemte det ved at tilføje følgende linie til mit ASP-script:
<% Session("Starttidspunkt") = Now %>
Det betød at der startede en session. Som beskrevet ovenfor giver serveren hver session et ID.
Din session har følgende ID: 1015033528
Jeg kan på ethvert tidspunkt kalde elementet "Starttidspunkt" frem fra sessionen ved f.eks. at skrive:
<% Response.Write Session("Starttidspunkt") %>
Hvilket ville afsløre at siden blev requestet 02-09-2010 20:06:12
(ifølge uret på denne webserver)
Det interessante er at informationen bliver liggende i Session objektet - også efter du har forladt dette dokument. Informationen følger dig indtil din session afbrydes.
Som standard holder en session i 20 minutter - derefter dør den automatisk. Men hvis man ønsker at en session skal leve længere eller kortere kan man definere det ønskede antal minutter på denne måde:
<% Session.Timeout = 60 %>
I dette tilfælde vil sessionen altså holde i 60 minutter før den timer ud. Mange sessions på samme tid belaster serveren - derfor bør man ikke lade sessions leve længere end det er nødvendigt.
Hvis du ønsker at stoppe en session kan dette til enhver tid gøres på denne måde:
<% Session.Abandon %>
Lad os prøve at kigge på endnu et eksempel hvor sessions benyttes - nemlig et eksempel på hvordan man kan lave en password løsning.
Dette eksempel viser hvordan du kan lave et meget simpelt system med password og login. Vi vil gøre brug af mange af de ting de har lært i de tidligere lektioner.
Det første vi har brug for er en formular hvor folk kan angive et login og et password - det kunne laves sådan her:
<html> <head> <title>tid og dato</title> </head> <body> <form method="post" action="login.asp"> <p>Login:<input type="text" name="login"> <p>Password:<input type="text" name="password"> <p><input type="submit" value="luk mig ind"> </form> </body> </html>
Dernæst skal vi lave filen login.asp
I denne fil skal vi tjekke om det er det rigtige password og login der er blevet angivet. Hvis dette er tilfældet sætter vi en session, som fortæller os at denne bruger er logget ind med det rigtige password og login.
<html> <head> <title>tid og dato</title> </head> <body> <% ' Tjek om login og password er korrekte If Request.Form("login") = "asp" AND Request.Form("password") = "asp" Then ' Hvis korrekt sættes session til JA Session("login") = "JA" Session.Timeout = 30 Response.Write "<h1>Du er nu logget korrekt ind</h1>" Response.Write "<p><a href='dokument.asp'>Link til beskyttet fil</a></p>" Else ' Hvis forkert sættes ingen session til NEJ Session("login") = "NEJ" Session.Timeout = 30 Response.Write "<h1>Du er IKKE logget korrekt ind</h1>" Response.Write "<p><a href='dokument.asp'>Link til beskyttet fil</a></p>" End If %> </body> </html>
På de dokumenter vi ønsker at beskytte skal der tjekkes om brugeren er logget ordentligt ind - hvis dette ikke er tilfældet bliver brugeren sendt tilbage til login formularen. Beskyttelsen laves på denne måde:
<% ' Hvis brugeren ikke er logget rigtigt på ' sendes han/hun direkte til formularen If Session("login") <> "JA" Then Response.Redirect "formular.asp" End If %> <html> <head> <title>tid og dato</title> </head> <body> <h1>Dette dokument er beskyttet</h1> <p>Du kan kun se det hvis du er logget på.</p> </body> </html>
Nu har du fået en introduktion til Session objektet. I den næste lektion bliver vi i den samme boldgade, og kigger nærmere på cookies.