ZAČÁTKYNÁVODYOOPDOKUMENTACE
Handledning/
HTTP

Cookies i PHP

11. 09. 2019

Obsah článku

> **Varning:** Den här artikeln skrevs för många år sedan och viss information kan vara föråldrad eller felaktig. Tänk på detta när du läser.

Cookies är små bitar av textinformation som lagras i en webbplatsbesökares webbläsare. De överförs alltid med varje sida som laddas på nytt och kan raderas, ändras och läsas av användaren när som helst, så de är inte lämpliga för att lagra personlig information.

Varning: Om din webbplats använder cookies för att spåra användare eller tillägg från tredje part (t.ex. Facebooks gilla-knapp, Google Analytics trafikmätare, reklambanners) måste du informera användaren om detta.

"Ytterligare en anmärkning: din webbplats bör inte innehålla reklam eller mätkoder förrän du har fått samtycke. Och det suger."

-- David Grudl

Läsa ett värde från en kaka

Alla cookies lagras i den superglobala variabeln $_COOKIE, som lagrar varje nyckel som en array.

Om vi till exempel har lagrat namnet på den inloggade användaren under nyckeln user i kakan kan vi enkelt hämta det:

echo $_COOKIE['användare'];

Observera: Cookies finns kanske inte alltid (t.ex. om du är en ny användare). Därför bör vi alltid kontrollera om det finns cookies innan vi lägger upp en webbplats och vid behov erbjuda ett alternativt felmeddelande.

if (isset($_COOKIE['användare']) && $_COOKIE['användare']) {
echo 'Inloggad användare:' . $_COOKIE['användare'];
} else {
echo 'Ingen har loggat in.';
}

Hämta alla tillgängliga kakor

Eftersom alla cookies lagras i den superglobala variabeln $_COOKIE kan de enkelt listas:

var_dump($_COOKIE);

Alternativt kan du gå igenom cykeln och hämta alla nycklar och värden:

foreach($_COOKIE as $key => $value) {
echo $key . ':' . $value; // skriva ut nyckeln och värdet
echo '<br>'; // omsluta linjen
}

Lagra värdet i en kaka

Funktionen setcookie() används för att lagra data i cookies.

Den första parametern är cookienyckeln, som används för att läsa den från fältet $_COOKIE, och den andra parametern är själva datan i form av en sträng.

Med den tredje parametern kan vi (frivilligt) ställa in giltighetstiden för kakan. Tillgänglighetstiden anges som tidsstämpel, så om vi vill ställa in en cookie med en giltighet på 1 timme från och med nu behöver vi bara skriva time() + 3600.

$data = 'Innehåll som vi vill lagra.';
setcookie('TestCookie', $data);
setcookie('TestCookie', $data, time() + 3600);

Lagring av större data

Cookies är inte lämpliga för att lagra större uppgifter (webbläsare tillåter vanligtvis endast 4 kB och högst 20 cookies att lagras, storleken omfattar även cookienamn, giltighetsinställningar etc.).

Det är bättre att lagra större uppgifter på servern och bara lägga in en identifierare i kakan, så att vi kan se vilken användare den tillhör. Denna metod kallas $_SESSION och diskuteras i en separat artikel.

Om du inte nödvändigtvis behöver lagra data alltid synkront på servern kan du använda localstorage lagring som finns i javascript. Kapaciteten är i storleksordningen MB och uppgifterna kan inte upphöra att gälla.

Jan Barášek   Více o autorovi

Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.

Rád vám pomůžu:

Související články

1.
3.