Till Startsidan

L�R DIG HUR MAN HANTERAR COOKIES (KAKOR)

Om kakor
Spara kakor
H�mta kakor
Radera kakor
�r kakor farliga?

Kakor, eller engelskans cookies, �r en bit information som kan sparas p� en bes�kares dator av en webbl�sare f�r att sedan kunna �terh�mtas vid bes�karens n�sta bes�k. Nyttan med dessa kakor �r att webbplatsen kan g�ra speciella inst�llningar f�r varje bes�kare. Dvs, bes�karen kan ange hur han vill att sidan ska se ut, och s� kan sidan som sparat kakorna k�nna av bes�karen vid n�sta bes�k f�r att sedan g�ra sidan p� det s�tt som beskrivs i kakan. Kakor kan �ven vara bra f�r annat. L�t oss s�ga att en hemsida ska vara skyddad med l�senord. D� kan man skapa ett script som lagrar en kaka d� en bes�kare anger r�tt kod och sedan s� skickas bes�karen iv�g till den hemliga sidan. Den hemliga sidan k�nner av kakan och m�rker om kakan inneh�ller den sak som den ska inneh�lla. Om den inneh�ller r�tt sak, d� visar sidan. Finns inte kakan, eller om inneh�llet i kakan �r fel, d� visas inte sidan. Dessa �r bara n�gra av m�nga anv�ndningsomr�den kakor har.

Kakor kan skapas p� olika s�tt. Vi ska visa hur man g�r det med JavaScript och Perl (CGI):

JavaScript:
document.cookie="KakansNamn=V�rdet P� Kakan";                                          //F�rsvinner n�r webbl�saren st�ngs
document.cookie="KakansNamn=V�rdet P� Kakan; expires="+datum_da_kakan_forsvinner;      //F�rsvinner n�r det best�mda datumet har g�tt ut

Perl
print "Set-Cookie: KakansNamn=V�rdet P� Kakan\n";                                      #F�rsvinner n�r att webbl�saren st�ngs
print "Set-Cookie: KakansNamn=V�rdet P� Kakan; expires=$datum_da_kakan_forsvinner\n";  #F�rsvinner n�r det best�mda datumet har g�tt ut
Mycket sv�rare �r det inte att spara en kaka, fast bara koderna ovan s�ger inte s� mycket om kakan, s� l�t oss titta lite n�rmare p� hur du kan skapa en fullst�ndig funktion f�r att spara en kaka i JavaScript:
<SCRIPT LANGUAGE="JavaScript">
<!--
//Don't remove this line: Script by Omid Rouhani, from www.JavaScript.nu
function spara(namn, innehall, lagringstid)             //Funktionshuvud
{
lagringstid=parseInt(eval(lagringstid));                //R�knar ut och avrundar lagringstid's inneh�ll, t.ex. om det skickats som en str�ng och inte som ett tal
 if (lagringstid+""=="NaN")                             //Om inget v�rde har givits �t lagringstid n�r funktionen anropades...
 {
  datumsnutt="";                                        //S� f�r datumsnutt ett tomt v�rde.
 }
 else                                                   //Om ett v�rde har givits �t lagringstid n�r funktionen anropades...
 {
  var datum = new Date();                                //S� deklareras datum, v�rdet blir dagens datum.
  datum.setTime(datum.getTime() + lagringstid);          //Datumet i datum �kar med det antal millisekunder som datum f�tt.
  datum=datum.toGMTString();                             //Vi g�r om datumet till GMT-tid.
  datumsnutt="; expires="+datum;                         //Datumsnutt f�r v�rdet ; expires=DATUM
 }
document.cookie=namn+"="+escape(innehall)+datumsnutt;    //Sparar kakan genom att tilldela document.cookie v�rdet kaknamnet, likamedtecken, kakv�rdet i escape:ad form samt datumsnutten (�r datumsnutt tomt s� lagras kakan tills webbl�saren st�ngs).
}


spara("Namn","Sven Svensson",1000*60*60*24*365);         //Anropar funktionen spara och lagrar Sven Svensson i kakan Namn. Kakan lagras i ett �r (1 millisekund * 1000 (=1 sekund)*60 (=1 minut)*60 (=1 timme)*24 (=1 dygn)*365 (=1 �r)).
spara("BesoksID","00058358");                            //Anropar funktionen spara och lagrar 00058358 i kakan BesoksID. Kakan lagras tills dess att webbl�saren st�ngs.
spara("Onodig_kaka");                                    //Anropar funktionen spara och lagrar undefined i kakan Onodig_kaka. �ven denna kaka lagras tills dess att webbl�saren st�ngs.
//-->
</SCRIPT>
S� l�tt sparar man kakor. Om du, som jag misst�nker, �ven vill kunna komma �t kakorna kan du anv�nda detta script:
<SCRIPT LANGUAGE="JavaScript">
<!--
//Don't remove this line: Script by Omid Rouhani, from www.JavaScript.nu
function hamta(namn)                                            //Funktionshuvud
{
kakor=document.cookie;                                          //Lagrar inneh�llet i document.cookie i kakor
kakor_delar=kakor.split("; ");                                  //Deklarerar en array med namnet kakor_delar
for (raknare_i=0;raknare_i<kakor_delar.length;raknare_i++)      //Startar en loop som p�g�r som max tills alla kakor_delar's delar har l�sts
{
tva_delar=kakor_delar[raknare_i].split("=");                    //Skapar arrayen tva_delar, som namnet s�ger inneh�ller tv� delar - namnet p� kakan i index 0 och dess v�rde i index 1
if (tva_delar[0]==namn)                                         //Om kakans namn motsvarar namn...
{
return unescape(tva_delar[1]);                                  //S� returneras kakans v�rde, i ett unescape:at format
}
}
return "";                                                      //Om kakan inte hittades s� returnerar scriptet en tom str�ng
}


namnet=hamta("Namn");                                           //H�mtar kakan Namn's inneh�ll (=Sven Svensson) och deklarerar variabeln namnet med kakans v�rde 
tom_variabel=hamta("KakaSomInteFinns");                         //F�rs�ker h�mta kakan KakaSomInteFinns, fast d� denna kaka inte finns s� returneras en tom str�ng, som tilldelas tom_variabel
//-->
</SCRIPT>


Script f�r Perl:
#!/usr/bin/perl

sub se_kaka	#Don't remove this line: Script by Omid Rouhani, from www.JavaScript.nu
{
$kaknamnet = $_[0];					#Lagrar f�rsta argumentet till funktionen
	@allakakor=split("; ", "$ENV{'HTTP_COOKIE'}");	#Lagrar alla kakorna i en array

	foreach $kaka (@allakakor)			#Loopar tills kakan hittats
	{
	($namn, $varde)=split(/=/,"$kaka");		#"kaknamn=kakv�rde" splitras in i tv� olika variabler
	
		if ($namn eq "$kaknamnet")		#Om kakan �r den vi efterfr�gat
		{
		return "$varde";			#Ska dess v�rde returneras
		}
	}
return 0;						#Om kakan inte finns returneras noll
}

$MinKaka=&se_kaka('bookmark');				#Lagrar kakans v�rde i en variabel

	#[Resten av scriptet kan skrivas h�r]
Om du inte riktigt h�ngt med s� beror det nog p� att du inte vetat hur document.cookie hanterar inneh�llet i kakorna. Inneh�llet lagras som en str�ng i detta format:
kaka1=inneh�ll1; kaka2=inneh�ll2; kaka3=inneh�ll3

Perl lagrar kakor i ett likadant format, fast ist�llet f�r document.cookies s� lagras str�ngen i:
$ENV{'HTTP_COOKIE'}


Vill du radera en kaka som du sparat s� �r det bara att spara den med ett datum som redan passerat. Med denna funktion kan det l�tt g�ras p� r�tt s�tt:
<SCRIPT LANGUAGE="JavaScript">
<!--
//Don't remove this line: Script by Omid Rouhani, from www.JavaScript.nu
function radera(namn)                                                 //Funktionshuvud
{
if(document.cookie.indexOf(namn+"=")!=-1 ||
   document.cookie.indexOf(namn+";")!=-1 ||
   document.cookie.substring(document.cookie.length-namn.length-2,document.cookie.length)=="; "+namn ||
   document.cookie==namn)                                             //Om kakan finns ska den raderas...
{
var datum = new Date();                                               //Dagens datum...
datum.setTime(datum.getTime() - 1000*60*60*24*365*30);                //Minus trettio �r...
datum=datum.toGMTString();                                            //I GSM-tid

if (navigator.appName=="Netscape")                                    //Om man har Netscape...
document.cookie=namn+"=; expires=Thu, 01-Jan-70 00:00:01 GMT";        //S� ska den raderas s�h�r
else
document.cookie=namn+"=; expires="+datum;                             //Annars ska den raderas s�h�r
}
}


radera("MinKaka");                                                    //Raderar kakan MinKaka om den finns, om den inte finns h�nder inget.
//-->
</SCRIPT>

Ibland kan man h�ra att kakor kan vara farliga. Detta �r fel. Kakor �r endast en bit text som lagras p� datorn. Webbl�saren best�mmer dess storlek och f�rs�krar sig om att informationen inte kan komma i fel h�nder. Dvs, man kan inte f� virus eller liknande genom kakor.
Det som d�remot kan vara integritetskr�nkande �r att personlig information om dig kan sparas i kakorna och att denna information sedan anv�nds av sidor du sj�lv inte vill. Om du t.ex. n�gonstans anger ditt k�n, namn, �lder, vart du bor etc. s� kan annons�rer anv�nda sig av denna information, som du har g�md i en kaka, f�r att visa dig en annons som de tror lockar dig.
Har du lagt m�rke till att svenska annonsbanners ibland dyker upp p� engelska sidor? D� beror det med st�rsta sannolikhet p� att annonsvisaren, dvs inte n�dv�ndigt sidan du bes�ker, utan den server som bilden (annonsen) finns p� och som hanterar annonsvisningarna har informationen att du bor i Sverige lagrad p� din dator.






Copyright © Omid Rouhani 1997-2022; Alla r�ttigheter reserverade.
Guider: [ HTML guide ] - [ JavaScript guide ] - [ DHTML guide ] - [ Perl guide ] - [ Sitemap ]