Cookie? - Hvad er det for en småkage

2006-03-24 16:25:37

Generelt

Sjovt, ikke. Hver gang du genindlæser dette tip, vil det huske dit navn og hvor mange gange du har kigget på siden. Hvordan? Ved hjælp af den lille "cookie" selvfølgelig. (Jeg KAN altså ikke få mig selv til at kalde det en småkage). Der er nogle få funktioner, som du er nødt til at være i stand til at skrive til og læse fra fra denne småkage (nej, "cookie" lyder altså mere seriøst). Heldigvis er der en amerikaner ved navn Bill Dortch, der har bestemt sig for at gøre disse funktioner tilgængelige for os almindelige dødelige. Indtil videre skal du ikke bekymre dig om, hvordan disse funktioner virker, men du skal lige lære at bruge dem.

Den første funktion gemmer en "cookie":

function SetCookie (name, value)
{
  var argv = SetCookie.arguments;
  var argc = SetCookie.arguments.length;
  var expires = (argc > 2) ? argv[2] : null;
  var path = (argc > 3) ? argv[3] : null;
  var domain = (argc > 4) ? argv[4] : null;
  var secure = (argc > 5) ? argv[5] : false;
  document.cookie = name + "=" + escape (value) +
    ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
    ((path == null) ? "" : ("; path=" + path)) +
    ((domain == null) ? "" : ("; domain=" + domain)) +
    ((secure == true) ? "; secure" : "");
}

Hvis ovenstående gør dig lidt forvirret, såtag det bare roligt. Det er vigtigere, at du forstår hvordan det bruges til at gemme information. For eksempel, hvis du ønsker at gemme en eller andens navn i en "cookie", der hedder "user_name", så foregår det som følger:

function set_name(form)
{
  var expdate = new Date ();
  expdate.setTime (expdate.getTime() + (24 * 60 * 60 * 1000 * 31));
  SetCookie ("user_name", "Bill Gates", expdate);
}

Først gav denne funktion en "sidste salgsdag" for vores småkage (efter denne dato vil vores "cookie" blive slettet). Da computeren regner i tusindedele sekunder, fik den altså en holdbarhed på31 dage. Alle "cookies" skal have en udløbsdato og en måned burde være nok i vores tilfælde (Det giver dig mulighed for at komme tilbage et par gange og checke at det stadig virker). Så afvikles SetCookie() funktionen: Den danner en "cookie", der hedder "user_name", sætter værdien af den til "BillGates" og sætter udløbsdatoen til 31 dage.

Såkunne det jo være sjovt at læse vores "cookie" igen. Nedennævnte 2 funktioner, tager sig af det:

function getCookieVal (offset)
{
  var endstr = document.cookie.indexOf (";", offset);
  if (endstr == -1)
    endstr = document.cookie.length;
  return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie (name)
{
  var arg = name + "=";
  var alen = arg.length;
  var clen = document.cookie.length;
  var i = 0;
  while (i < clen) {
    var j = i + alen;
    if (document.cookie.substring(i, j) == arg)
      return getCookieVal (j);
    i = document.cookie.indexOf(" ", i) + 1;
    if (i == 0) break;
  }
  return null;
}

Disse 2 funktioner virker sammen, så det er vigtigt, at de altid optræder sammen. Ved at bruge disse 2 funktioner til at læse den information vi har gemt i "user_name-cookie'en" ville du bare behøve at skrive:

document.write(GetCookie("user_name"));

Dette udskriver værdien af "user_name", I denne situaton altså"Bill Gates". Hvis du ville have udskrevet værdien af en anden "cookie", ville du bare erstatte "user_name" med den anden værdi. Du kan tildele en "cookie"s værdi til en variabel, og på den måde fåmulighed for at manipulere med værdierne og lave programmer, der kan gemme og hente information. Husk at du skal benytte alle 3 funktioner: SetCookie(), GetCookie(), og getCookieVal(), for at kunne bruge en "cookie" til noget som helst.

Men hvad så med alle os paranoide, der tror, at måske ikke lige Microsoft, men sået andet mere dubiøst firma, skulle finde på at lægge en eller anden form for "Cookie-virus" ind på vores harddiske? - Eller hvad hvis NetScape eller et andet firma havde lyst til at vide hvordan vores computere var konfigureret og hvilke spil, der låpå dem?

- Ikke noget problem. For det første er det meget begrænsede ting, der kan lagres uden at du selv indtaster noget og for det andet, sålagres alle "cookies" i biblioteket \WINDOWS\COOKIES, og vi kan til hver en tid gå ind og se, hvilke informationer, der er samlet op, og hvis vi ikke har lyst til at have dem liggende, er en "cookie" jo bare en fil, som vi kan slette.