Hva er en Cookie?

En cookie er en liten tekstfil som lagres i browseren på datamaskinen (klienten) og som inneholder informasjon fra forrige gang du brukte en spesiell webside. Hver gang du åpner den samme websiden igjen vil browseren sende cookien til serveren . I JavaScript kan man både lagre og hente cookie-verdier.

Eksempler på bruk av cookies

En cookie består av tre elementer

  1. Et navn-verdi par som inneholder de aktuelle dataene
  2. En utgått dato (expiry date) som sier hvor lenge cookien er valid (GMT)
  3. Domene og stien på serveren hvor den skal brukes

Sette en cookie

document.cookie = streng;

Hente en cookie

streng = document.cookie.substring(c_start,c_end)

Siden cookiene er lagret som en tekststreng så trenger vi å bruke stringmetoder for å hente frem verdien. Bruker indexOf som returnerer indeksen til første forekomsten av en string/karakter.

Eksempel:

 S='Hallo alle sammen';

Dagens oppgave

Vi skal lage et enkelt progran som setter to cookies når websiden avsluttes og henter dem frem når lastes. Bruker to eventer til å kalle funksjonene:

<body onLoad="checkCookie()"; onunload="setCookie()">

Hele programmet ser slik ut

<html>
<head>
<script type="text/javascript">
  function setCookie()
  {
    var exdate=new Date();
    var expiredays=365;
    exdate.setDate(exdate.getDate()+expiredays);
    value=document.getElementById("name").value;
    c_name='username';
    document.cookie=c_name+ "=" +escape(value) + ";
           expires="+exdate.toGMTString();
    value=document.getElementById("adr").value;
    c_name='adresse';
    document.cookie=c_name+ "=" +escape(value) + ";
           expires="+exdate.toGMTString();
  }

  function checkCookie()
  {
    username=getCookie('username');
    if (username!=null && username!="")
    {
      document.getElementById("name").value=username;
    }
   
    adresse=getCookie('adresse');
    if (adresse!=null && adresse!="")
    {
      document.getElementById("adr").value=adresse;
    }
  }

  function getCookie(c_name)
  {
    if (document.cookie.length>0)
    { 
      c_start=document.cookie.indexOf(c_name + "=")
      if (c_start!=-1)
      { 
        c_start=c_start + c_name.length+1 
        c_end=document.cookie.indexOf(";",c_start)
        if (c_end==-1) 
          c_end=document.cookie.length
        return unescape(document.cookie.substring(c_start,c_end))
      } 
    }
    return ""
  }

<script>
<head>
<body onLoad="checkCookie()"; onunload="setCookie()">
<form>
  Navn: <input id="name" type="text" size="20" value="" />
  Adresse: <input id="adr" type="text" size="20" value="" />
</form>
</body>
</html>

Eksempel: cookietest.html