<< Tilbage

Sessioner i PHP

Sessioner bruges til at overføre data mellem sider. Et eksempel på brugen kunne være i forbindelse med et loginsystem, sådan at du altid kan identificere din bruger, uanset hvor han befinder sig på din side. Man kan tilføje variabler til sin session, hvorefter man så vil kunne tilgå denne variabel rundt på hele siden.

Starte en session

Der er et par grundlæggende funktioner vi lige skal have styr på. Den første kaldes session_start(), som starter/åbner sessionen så vi får mulighed for at tilføje variabler til sessionen, og hive variabler ud. Eksempel:

Kode:
1.
2.
3.
4.
<?php
session_start
();
//Nu er sessionen åbnet og jeg kan tilføje/hente variabler ud af den
?>

Tilføje data til sessionen

Sessionen er i virkeligheden bare et Array som kaldes $_SESSION. Det er til dette array vi skal tilføje data:

Kode:
1.
2.
3.
4.
5.
6.
<?php
session_start
(); //Åben sessionen

$_SESSION['navn'] = "Anders And"//Tilføj en variabel til sessionen
$_SESSION['alder'] = "75"//Tilføj endnu en variabel til sessionen
?>

I linje 2 åbner vi sessionen, det er vigtigt at huske det hver gang du ønsker at arbejde med din session. I linje 4 og 5 tilføjer vi 2 variabler til sessionen. Den ene kalder vi navn og den anden alder.

Hente data ud af sessionen

Nu har vi lært hvordan man tilføjer variabler til sin session, her er et eksempel på hvordan man henter værdierne ud fra sessionen igen:

Kode:
1.
2.
3.
4.
5.
6.
7.
<?php
session_start
(); //Åben sessionen

$_SESSION['yndlingsret'] = "Lasagne Bolognese"//Tilføj yndlingsret til sessionen

echo $_SESSION['yndlingsret']; //Hent den fra sessionen igen
?>

Når variablen én gang er tilføjet til sessionen, så har vi som sagt adgang til den rundt på hele siden (indtil brugeren lukker browservinduet). Her et eksempel på hvordan vi får fat i den variabel vi lige har tilføjet, rundt på de andre sider:

Kode:
1.
2.
3.
4.
<?php
session_start
(); //Åben sessionen
echo $_SESSION['yndlingsret']; //Hent "yndlingsret" ud
?>

Slette data fra en session

Ønsker man at fjerne en variabel fra sin session benyttes funktionen unset(). I eksemplet herunder starter vi med at tilføje en variabel og bagefter fjerne den igen:

Kode:
1.
2.
3.
4.
5.
<?php
session_start
(); //åben session
$_SESSION['fornavn'] = "Anders"//tilføj "fornavn" til sessionen
unset($_SESSION['fornavn']); //slet den igen
?>

unset() er ikke specifikt bereget til sessions, men bruges i almindelig i php til at slette variabler.

Til at slette alle variabler i sessionen og starte fra bunden, så kan man fyre funktionen session_destroy() af.

Headers already sent by output...

Den hyppigste fejl når man bruger sessions er fejlen: Warning: session_start(): Cannot send session cookie - headers already sent by (output started at..

Fejlen opstår når man forsøger at kalde session_start() efter alle headerne allerede er sendt. Det kan løses på 2 måder. Den simpleste løsning er at flytte session_start() op i dit dokument, før alt html-kode (og før du bruger echo/print i php). Den anden løsning er vha. output buffering:

Kode:
1.
2.
3.
4.
5.
6.
7.
8.
<?php
ob_start
(); //Start output buffering

session_start();
$_SESSION['test'] = "test";

ob_end_flush(); //Slå output buffering fra
?>

Bemærk: det er vigtigt at placere ob_start() øverst i dit dokument.

Leder du efter billige usb stik?, så kan du få et Billigt USB stik hos usb.dk

Spørgsmål/forslag/kommentarer rettes til webmaster@phpartikler.dk

Billige USB stik