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 så är fallet svarar PHP genom att skicka cookie-token i URL:en.
Diagrammet nedan visar hur cookies fungerar.
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 spåra applikationens tillstånd med hjälp av små filer lagrade 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.
- Spåra 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 medanwww.sub.cookiedomain.com
begränsar åtkomsten till cookieswww.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.
Notera: 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:en http://localhost/phptuts/cookies_read.php
Obs: Endast en tom array har visats
- Steg 2 – Webbläsare till URL:en http://localhost/phptuts/cookies.php
- Steg 3 – Växla tillbaka till den första fliken och klicka sedan på uppdateringsknappen
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: n http://localhost/phptuts/cookie_destroy.php
- Byt till URL:en 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ärhelst en session skapas, lagras en cookie som innehåller det unika sessions-ID på användarens dator och returneras med varje begäran till servern. Om klientwebbläsaren inte stöder cookies, visas det unika php-sessions-id:t i URL:en
- 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:en
- Du utvecklar en applikation som en kundvagn som måste tillfälligt lagra information med en kapacitet större än 4KB.
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 ges ett unikt identifierings-id som används för att spåra variablerna för en användare.
- Både cookies och sessioner måste startas innan några HTML-taggar har skickats till webbläsaren.