gennemgang af cookies og sessions

En cookie kan kort beskrives som et lille stykke data, som et website kan vælge at gemme på brugernes computere, hvorefter det sendes tilbage til websitet hver gang brugeren besøger det.

Historie

Web cookies eller helt præcist HTTP cookies blev første gang introduceret til webprogrammering i 1994 af en ansat ved Netscape (browseren Netscape Navigator blev benyttet af mere end 80% i 1995, kilde Dataquest). Netscape skulle dengang udvikle en webshop og man ønskede en måde, hvorpå man kunne gemme brugernes tilstand på deres egen computer, for at gemme hvilke varer brugeren havde lagt i indkøbskurven.

Året efter i 1995 integrerede Microsoft også brugen af cookies i deres browser Internet Explorer. I begyndelsen kendte offentligheden ikke rigtigt til brugen af cookies, og browserne var som standard sat op til at tillade dem fuldt ud. Først senere efter offentlighedens bekymring omkring brugen af cookies, er det blevet muligt at ændre indstillingerne for brugen af cookies i sin browser.

I 1996 og 1997 blev brugen af cookies diskuteret i to høringer ved U.S. Federal Trade Commision, og man lavede nogle anbefalinger for brugen af cookies. Netscape og Internet Explorer ignorerede dem dog og det blev nærmere reglen end undtagelsen at mange annoncører og reklamer på nettet begyndte at bruge cookies for at aflæse brugernes bevægelser på internettet. I 2000 blev der udfærdiget nogle nye anbefalinger, men først i 2011 indførte EU og USA skrappere regler på området. Reglerne betyder grundlæggende, at websites skal informere brugerne om brugen af cookies på deres sider. Reglerne bliver endnu ikke håndhævet fuldt ud i dag, men websites som blandt andet home.dk og ekstrabladet.dk gør opmærksom på brugen af cookies på deres sider.

Hvad bruges Cookies til?

Cookies bruges typisk til følgende

  • Er en bruger logget ind eller ej
  • Indkøbskurv
  • Gemme brugernavnet til næste gang brugeren skal logge ind
  • Huske andre personlige indstillinger (fx hvis man har valgt et bestemt sprog, indtastet at man bor i en bestemt by eller at man kun søger lejligheder og ikke huse)
  • Tracking af bevægelses mønstre (hvilke sider har man besøgt, hvornår, hvor lang tid osv.)

Opgaver

  • Giv andre eksempler end i teksten på hvad cookies kan bruges til?
  • Nævn nogle websites du kender, som benytter cookies og hvad de benytter dem til?

Forskellige typer Cookies

Overordnet skelner man mellem to forskellige typer cookies; persistent og session cookies.

Persistent cookie

En persistent cookie er vedvarende og gemmes på brugerens computer. Et website kan definere en udløbsdato for deres cookie til fx et år, hvilket betyder, at cookien bliver gemt på ens computer i et år medmindre man selv sletter den.

Session cookie

En session cookie er en midlertidig cookie, der normalt kun eksisterer på brugerens computer, imens man besøger et website eller lukker browseren. Denne form for cookie gemmes i memory (ram) på computeren og ikke harddisken.

Andre typer

Der findes også andre mere specifikke typer cookies, som typisk er en underkategori til ovenstående typer cookies.

  • Third-party cookie

Kan fx bruges til at spore og opbygge brugernes bevægelseshistorik på nettet. Benyttes typisk af annoncører, der ønsker at målrette deres reklame. Hvis du fx har besøgt et website omhandlende ski, viser de reklamer for køb af skiudstyr. Hvis du har besøgt hjemmesider om heste, viser de reklamer til det segment.
Hvis man ikke ønsker, at websites skal kunne spore dig på tværs af hjemmesider, kan man fjerne tilladelsen af third-party cookies i ens browser. Det betyder, at når man fx er på siden www.mitwebsite.dk, er det ikke muligt at lave en third-party cookie på din computer for fx en annoncør www.reklamer.dk.

  • Secure cookie

En sikker cookie bør man benytte, hvis man gemmer følsom data i ens cookie. Ved at lave en secure cookie sørger man for, at cookien altid bliver sendt krypteret til serveren.

  • HttpOnly cookie

Denne type cookie betyder, at cookien kun kan benyttes, når man sender over HTTP eller HTTPS. Det betyder at kode fra fx Javascript eller Flash ikke kan få adgang til at læse cookien.

  • samt flere typer cookies, som vi ikke vil behandle her.

Opgaver

  • Kategoriser de 5 forskellige brugstyper (logget ind, indkøbskurv, gemme brugernavn, huske personlige indstillinger og tracking) efter hvilken type cookie, der er mest oplagt at benytte til opgaven (persistent eller session)?

Implementering af persistente cookies i PHP

Følgende afsnit vil gennemgå funktioner til at oprette, læse og slette persistente cookies i PHP.

Oprette en cookie

For at oprette en cookie skal man benytte funktionen setcookie(). Det er vigtigt, at man husker at kalde funktionen før <html> tagget.

Følgende eksempel gemmer en cookie på brugerens computer med navnet på vedkommende.

<?php
setcookie("name", "Jens Jensen", time()+60*60*24*30);
?>

<html>
..... 
</html>

Funktionen time() giver os det nuværende tidspunkt, og dertil lægger vi det antal sekunder, vi ønsker, før cookien skal udløbe og slettes. 60*60*24*30 er 60 sekunder * 60 minutter * 24 timer * 30 dage, hvilket gør at cookien udløber om præcist 30 dage.

Læse en cookie

Når vi skal læse vores cookie igen, gør vi det via et opslag i $_COOKIE variablen. Idet brugeren nødvendigvis ikke har besøgt vores side før eller at cookien er udløbet, er det ikke sikkert, at den cookie vi forsøger at læse, eksisterer på brugerens computer. Derfor bør man tjekke om cookien findes ved at kalde funktionen isset().

Følgende eksempel tjekker først om cookien eksisterer, og skriver derefter et output til brugeren baseret på cookien.

<html>
<body>

<?php
if (isset($_COOKIE["name"]))
  echo "Velkommen tilbage " . $_COOKIE["name"];
else
  echo "Velkommen gæst";
?>

</body>
</html>

Slette en cookie

Hvis vi ønsker at slette en cookie, kan man gøre det meget simpelt ved at skrive til cookien, dog med et udløbstidspunkt der allerede har fundet sted. På den måde vil den eksisterende cookie blive overskrevet. I dette eksempel sætter vi udløbstidspunktet for en time siden.

<?php
setcookie("name", "", time()-60*60);
?>

Opgaver

Vi repræsenterer en online tøjbutik, og vil gerne henvende os til det køn, der besøger vores website for at vise aktuelle tilbud og nye kollektioner. Hvis brugeren aldrig har besøgt vores hjemmeside før, kender vi ikke kønnet på personen. Hvis brugeren ikke har besøgt os før, bliver vedkommende bedt om at vælge tøj for enten mænd eller kvinder, og dermed kender vi brugerens køn til fremtiden.
Skriv noget PHP kode, der gør følgende:

  • En bruger har netop valgt tøj for kvinder. Skriv en cookie, der gemmer hendes køn i et år.
  • En bruger er tilbagevendt til vores website. Skriv noget kode, der skriver "Tøjafdelingen for mænd" eller "Tøjafdelingen for kvinder" alt efter hvilket køn, der er gemt i cookien.
  • Udvid ovenstående kode med følgende tekst, hvis brugeren aldrig har besøgt vores website før: "Velkommen. Vælg venligst tøjafdeling".

Implementering af session cookies i PHP

Medmindre andet er angivet, er indholdet af denne side licenseret under Creative Commons Attribution-NonCommercial 3.0 License