PHP-session och PHP-kakor med exempel

Vad รคr Cookie?

En cookie รคr en liten fil med den maximala storleken 4KB som webbservern lagrar pรฅ klientdatorn.

Nรคr en cookie har stรคllts in returnerar alla sidfรถrfrรฅgningar som fรถljer cookienamnet och -vรคrdet.

En cookie kan endast lรคsas frรฅn den domรคn som den har utfรคrdats frรฅn. Till exempel en cookieuppsรคttning som anvรคnder domรคnen www.guru99.com kan inte lรคsas frรฅn domรคnen career.guru99.com.

De flesta webbplatser pรฅ internet visar element frรฅn andra domรคner som reklam. De domรคner som betjรคnar dessa element kan ocksรฅ stรคlla in sina egna cookies. Dessa รคr kรคnda som tredjepartscookies.

En cookie skapad av en anvรคndare kan endast vara synlig fรถr dem. Andra anvรคndare kan inte se dess vรคrde.

De flesta webblรคsare har alternativ fรถr att inaktivera cookies, tredjepartscookies eller bรฅda.

Om detta รคr fallet svarar PHP genom att skicka cookie-token i URL.

Diagrammet nedan visar hur cookies fungerar.

Vad รคr Cookie

Hรคr,

1) En anvรคndare begรคr en sida som lagrar cookies

2) Servern stรคller in cookien pรฅ anvรคndarens dator

3) Andra sidfรถrfrรฅgningar frรฅn anvรคndaren kommer att returnera cookiens namn och vรคrde

Varfรถr och nรคr ska man anvรคnda cookies?

  • Http รคr ett tillstรฅndslรถst protokoll; cookies tillรฅter oss att track programmets tillstรฅnd med hjรคlp av smรฅ filer som lagras pรฅ anvรคndarens dator. Sรถkvรคgen dit cookies lagras beror pรฅ webblรคsaren. Internet Explorer lagrar dem vanligtvis i mappen Temporal Internet Files.
  • Personifiering av anvรคndarupplevelsen โ€“ detta uppnรฅs genom att tillรฅta anvรคndare att vรคlja sina preferenser. Den efterfrรฅgade sidan som fรถljer รคr personlig baserat pรฅ de instรคllda instรคllningarna i cookies.
  • Tracking de sidor som besรถkts av en anvรคndare

Skapa cookies

Lรฅt oss nu titta pรฅ den grundlรคggande syntaxen som anvรคnds fรถr att skapa en cookie.

<?php

setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]);

?>

Hร„R,

  • Php "setcookie" รคr PHP-funktion anvรคnds fรถr att skapa kakan.
  • "cookie_name" รคr namnet pรฅ den cookie som servern kommer att anvรคnda nรคr den hรคmtar sitt vรคrde frรฅn arrayvariabeln $_COOKIE. Det รคr obligatoriskt.
  • "cookie_value" รคr vรคrdet pรฅ cookien och dess obligatoriska
  • "[expiry_time]" รคr valfritt; den kan anvรคndas fรถr att stรคlla in utgรฅngstiden fรถr kakan, till exempel 1 timme. Tiden stรคlls in med hjรคlp av PHP time() funktionerna plus eller minus ett antal sekunder stรถrre รคn 0 dvs time() + 3600 i 1 timme.
  • "[cookie_path]" รคr valfritt; den kan anvรคndas fรถr att stรคlla in cookie-sรถkvรคgen pรฅ servern. Snedstrecket "/" betyder att cookien kommer att gรถras tillgรคnglig pรฅ hela domรคnen. Underkataloger begrรคnsar cookieรฅtkomsten till underdomรคnen.
  • "[domรคn]" รคr valfritt, det kan anvรคndas fรถr att definiera cookieรฅtkomsthierarkin, dvs www.cookiedomain.com betyder hela domรคnen medan www.sub.cookiedomain.com begrรคnsar รฅtkomsten till cookies www.sub.cookiedomain.com och dess underdomรคner. Observera att det รคr mรถjligt att ha en underdomรคn till en underdomรคn sรฅ lรคnge det totala antalet tecken inte รถverstiger 253 tecken.
  • "[sรคker]" รคr valfritt, standardvรคrdet รคr falskt. Den anvรคnds fรถr att avgรถra om cookien skickas via https om den รคr satt till true eller http om den รคr instรคlld pรฅ false.
  • "[Httponly]" รคr valfritt. Om det รคr instรคllt pรฅ sant, รคr det bara klientsidans skriptsprรฅk, dvs JavaScript kan inte komma รฅt dem.

Obs: php set cookie-funktionen mรฅste kรถras fรถre HTML-รถppningstaggen.

Lรฅt oss nu titta pรฅ ett exempel som anvรคnder cookies.

Vi kommer att skapa ett grundprogram som lรฅter oss lagra anvรคndarnamnet i en cookie som gรฅr ut efter tio sekunder.

Koden nedan visar implementeringen av ovanstรฅende exempel "cookies.php".

<?php
     setcookie("user_name", "Guru99", time()+ 60,'/'); // expires after 60 seconds
     echo 'the cookie has been set for 60 seconds';
?>

Produktion:

the cookie has been set for 60 seconds

Hรคmtar cookie-vรคrdet

Skapa en annan fil med namnet "cookies_read.php" med fรถljande kod.

<?php
     print_r($_COOKIE);    //output the contents of the cookie array variable 
?>

Produktion:

Array ( [PHPSESSID] => h5onbf7pctbr0t68adugdp2611 [user_name] => Guru99 )

Notera: $_COOKIE รคr en PHP inbyggd superglobal variabel.

Den innehรฅller namnen och vรคrdena fรถr alla instรคllda cookies.

Antalet vรคrden som

$_COOKIE-arrayen kan innehรฅlla beror pรฅ minnesstorleken instรคlld i php.ini.

Standardvรคrdet รคr 1 GB.

Testar vรฅr applikation.

Lรฅt oss anta att du har sparat dina PHP-filer i phptus-mappen.

  • Steg 1 โ€“ รถppna din webblรคsare och ange URL http://localhost/phptuts/cookies_read.php

Hรคmtar cookie-vรคrdet

Obs: Endast en tom array har visats

  • Steg 2 โ€“ Webblรคsare till URL http://localhost/phptuts/cookies.php

Hรคmtar cookie-vรคrdet

  • Steg 3 โ€“ Vรคxla tillbaka till den fรถrsta fliken och klicka sedan pรฅ uppdateringsknappen

Hรคmtar cookie-vรคrdet

Vรคnta en minut och klicka sedan pรฅ uppdateringsknappen igen. Vilka resultat fick du?

Ta bort cookies

  • Om du vill fรถrstรถra en cookie innan dess utgรฅngstid stรคller du in utgรฅngstiden till en tid som redan har passerat.
  • Skapa en ny fil med namnet cookie_destroy.php med fรถljande kod
<?php

 setcookie("user_name", "Guru99", time() - 360,'/');

?>
  • Upprepa steg 1 till 3 frรฅn avsnittet ovan om att hรคmta cookie-vรคrden.
  • ร–ppna URL http://localhost/phptuts/cookie_destroy.php
  • Byt till URL http://localhost/phptuts/cookies_read.php vilka resultat visar den?

Vad รคr en session?

  • En session รคr en global variabel som lagras pรฅ servern.
  • Varje session tilldelas ett unikt id som anvรคnds fรถr att hรคmta lagrade vรคrden.
  • Nรคr en session skapas lagras en cookie som innehรฅller det unika sessions-ID:t pรฅ anvรคndarens dator och returneras med varje begรคran till servern. Om klientens webblรคsare inte stรถder cookies visas det unika php-sessions-ID:t i URL
  • Sessioner har kapacitet att lagra relativt stor data jรคmfรถrt med cookies.
  • Sessionsvรคrdena raderas automatiskt nรคr webblรคsaren stรคngs. Om du vill lagra vรคrdena permanent bรถr du lagra dem i databasen.
  • Precis som arrayvariabeln $_COOKIE lagras sessionsvariabler i arrayvariabeln $_SESSION. Precis som cookies mรฅste sessionen startas fรถre eventuella HTML-taggar.

Varfรถr och nรคr ska jag anvรคnda sessioner?

  • Du vill lagra viktig information som anvรคndar-ID pรฅ ett sรคkrare sรคtt pรฅ servern dรคr skadliga anvรคndare inte kan behรคrska dem.
  • Du vill รถverfรถra vรคrden frรฅn en sida till en annan.
  • Du vill ha alternativet till cookies pรฅ webblรคsare som inte stรถder cookies.
  • Du vill lagra globala variabler pรฅ ett effektivt och sรคkrare sรคtt jรคmfรถrt med att skicka dem i URL
  • Du รคr utveckladping en applikation som en butikping varukorg som tillfรคlligt mรฅste lagra information med en kapacitet stรถrre รคn 4 KB.

Skapa en session

Fรถr att skapa en session mรฅste du fรถrst anropa PHP session_start-funktionen och sedan lagra dina vรคrden i arrayvariabeln $_SESSION.

Lรฅt oss anta att vi vill veta hur mรฅnga gรฅnger en sida har laddats, vi kan anvรคnda en session fรถr att gรถra det.

Koden nedan visar hur man skapar och hรคmtar vรคrden frรฅn sessioner

<?php

session_start(); //start the PHP_session function 

if(isset($_SESSION['page_count']))
{
     $_SESSION['page_count'] += 1;
}
else
{
     $_SESSION['page_count'] = 1;
}
 echo 'You are visitor number ' . $_SESSION['page_count'];

?>

Produktion:

You are visitor number 1

Fรถrstรถra sessionsvariabler

Funktionen session_destroy() anvรคnds fรถr att fรถrstรถra hela Php-sessionsvariablerna.

Om du bara vill fรถrstรถra ett enda objekt i en session anvรคnder du funktionen unset().

Koden nedan illustrerar hur man anvรคnder bรฅda metoderna.

<?php

 session_destroy(); //destroy entire session 

?>
<?php

unset($_SESSION['product']); //destroy product session item 

?>

Session_destroy tar bort all sessionsdata inklusive cookies associerade med sessionen.

Unset frigรถr endast de individuella sessionsvariablerna.

ร–vrig data fรถrblir intakt.

Sammanfattning

  • Cookies รคr smรฅ filer som sparas pรฅ anvรคndarens dator
  • Cookies kan endast lรคsas frรฅn den utfรคrdande domรคnen
  • Cookies kan ha en utgรฅngstid, om den inte รคr instรคlld sรฅ fรถrfaller cookien nรคr webblรคsaren stรคngs
  • Sessioner รคr som globala variabler lagrade pรฅ servern
  • Varje session fรฅr ett unikt identifierings-ID som anvรคnds fรถr att track variablerna fรถr en anvรคndare.
  • Bรฅde cookies och sessioner mรฅste startas innan nรฅgra HTML-taggar har skickats till webblรคsaren.

Sammanfatta detta inlรคgg med: