|
|
![]() |
||
|
|
|||
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:
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 ] |