Sessioner
En session låter servern komma ihåg en besökare mellan sidvisningar, utan att datan lämnar servern.
Servern får ett minne
En session kopplar ihop en specifik besökare (webbläsare) med webbservern och ger servern ett “minne”.
session_start()skapar en session och ger den ett unikt id.- Id:t skickas till webbläsaren som kakan PHPSESSID.
- Allt du lägger i
$_SESSIONsparas på servern, kopplat till det id:t. - Vid nästa anrop skickar webbläsaren med kakan, och
session_start()hämtar fram rätt data.
Skillnaden mot kakor är att bara id:t finns hos besökaren. Själva datan ligger på servern, där besökaren inte kan läsa eller ändra den.
En räknare
Kör koden och klicka på länken några gånger. Titta på raden Kakor: där ligger bara PHPSESSID, inte räknaren.
Tryck sedan på Ny besökare. Kakan försvinner, och servern ser dig som en ny besökare med en ny session.
Regler för sessioner
session_start()måste anropas på varje sida som använder sessionen.- Den måste anropas före all utskrift, av samma skäl som
setcookie(). $_SESSIONfungerar som en vanlig associativ array.
Avsluta en session
unset($_SESSION['besok']); // ta bort ett värde
session_destroy(); // ta bort hela sessionen, till exempel vid utloggning
Prova själv
- Lägg till en länk “Nollställ” som sätter räknaren till 0. Tips:
?nollstall=1. - Lägg till ett formulär där besökaren anger sitt namn, spara det i
$_SESSION['namn']och hälsa med namnet vid varje visning. - Lägg till en länk “Logga ut” som anropar
session_destroy().
Kaka eller session?
| Kaka | Session | |
|---|---|---|
| Var sparas datan? | I besökarens webbläsare | På servern |
| Kan besökaren ändra den? | Ja | Nej |
| Hur länge finns den? | Tills tiden du angett går ut | Tills webbläsaren stängs eller sessionen tar slut |
| Passar för | Inställningar, som tema och språk | Inloggning, varukorg, data som ska vara pålitlig |