En cookie er en lille tekstfil, der bliver gemt lokalt på brugerens computer, som kan hentes igen af serveren til bearbejdning. Med PHP kan man også sende en cookie eller en session cookie til brugerens browser med de informationer man nu ønsker.

Et lille eksempel

redigér

Lad os sige, at vi vil sende en cookie til brugeren kaldet "test". Den skal indeholde værdien "Dette er en test". Tekstfilen skal "leve" i en time (3600 sekunder) og skal kunne hentes fra alle mapper på det pågældende domæne.

<?php
    setcookie("test", "Dette er en test", time()+3600, "/", da.wikibooks.org, 0);
?>

Funktionen setcookie() er den funktion, der sender HTTP cookien. Vi har kaldt den for "test" med den værdi vi ønskede. Funktionen time() skriver et tidsformat ud fra den angivede tid. I dette tilfælde i 3600 sekunder. Skråstregen i gåseøjnene, "/", bestemmer, at cookien skal kunne hentes af alle scripts på domænet. Hvis den kun skal hentes fra mappen /wiki, skal værdien så være "/wiki". Domænet, som cookien skal kunne hentes fra er sat til da.wikibooks.org. Bemærk: Cookien vil ikke blive sendt korrekt, hvis den sendes fra et forkert domæne. For at undgå fejl kan man i stedet for domænet skrive $_SERVER[HTTP_HOST], som automatisk finder ud af, hvilken adresse man kommer fra (Fx localhost, 127.0.0.1 eller da.wikibooks.org).

redigér

Session cookies fungerer som almindelige cookies, udover at de gemmes i computerens hukommelse i stedet for på harddisken. På den måde undgår man også eventuel ændring af værdierne i cookien. For at sende en session cookie sætter man bare levetiden til 0.

Eksempel:

<?php
    setcookie("test", "Dette er en test", 0, "/", $_SERVER[HTTP_HOST], 0);
?>

Når brugeren lukker webbrowseren slettes denne cookie også.

redigér

Hvis du vil slette en cookie inden for den specificerede levetid, skal man benytte samme setcookie() funktion, udover at man ikke angiver indholdsværdien. Derudover skal man angive en negativ levetid på 60 sekunder. Se følgende eksempel:

<?php
    setcookie("test", "", time()-60, "/", $_SERVER[HTTP_HOST], 0);
?>