Vilken php-funktion låter dig ställa in cookie-värden. Setcookie - Skickar en cookie. Skriver funktionen "Kom ihåg mig".

Cookies är små textfiler som skapas av webbläsaren i en speciell mapp när de beordras av ett PHP-program. Även om JavaScript också kan skapa en cookie, är det inte vad den här artikeln handlar om. Här kommer vi bara att prata om att sätta cookies genom ett PHP-program.

Cookies innehåller information i form av namn=värdepar. Du kan till exempel registrera användarens inloggning och lösenord i en cookie och lagra dem på klientens dator så att denne inte loggar in igen nästa gång. Att lagra inloggning och lösenord i cookies är naturligtvis inte det säkraste sättet, och det är bättre att lagra denna data med hjälp av sessioner i PHP, men det här fallet är lämpligt som ett exempel på användning av cookies.

PHP-programmet instruerar klientens webbläsare att ställa in en cookie med hjälp av en sträng i svarshuvudet. Det vill säga, du måste förstå hur Internet fungerar, vad en begäran-rubrik och en svarsrubrik är, för att förstå hur inställningen av en cookie fungerar.

Så, PHP-programmet skickar all information om vilka cookies webbläsaren ska ställa in i svarshuvudet.

Ställa in cookies i PHP

För att ställa in en cookie har PHP funktionen setcookie() den ställer in cookien, som skickas till webbläsaren tillsammans med andra HTTP-rubriker.

Alla rubriker som ditt skript producerar måste skickas innan hur ditt skript kommer att visa något i webbläsarfönstret.

Låt oss återgå till vår funktion. Här är dess syntax:

Bool setcookie (strängnamn, strängvärde, int lifetime, strängsökväg, strängdomän, bool-protokoll, endast bool http)

bool, sträng, int i denna syntax är datatyper. Det vill säga "bool setcookie()" betyder att funktionen setcookie() returnerar ett booleskt värde. Därefter måste det första och andra argumentet (namn och värde) vara av typen string, och så vidare.

Jag ska genast säga att för att komma igång behöver du bara de tre första parametrarna. Du kan ignorera resten tills vidare.

  • strängnamn - namn i paret namn=värde
  • strängvärde - värde i paret namn=värde
  • int lifetime - cookie-lagringstid, detta är Unix-tidsstämpeln, dvs. Det är tillrådligt att ställa in denna tid med funktionen time() och lägga till tiden i sekunder efter vilken cookien ska förfalla. Du kan också använda mktime()-funktionen.
  • sträng sökväg - sökväg till katalogen på servern från vilken cookies kommer att vara tillgängliga.
  • string domän - domänen för vilken cookies är tillgängliga.
  • bool-protokoll - indikerar att cookievärdet ska överföras från klienten över en säker HTTPS-anslutning. Om satt till TRUE kommer en cookie från klienten att skickas till servern endast om en säker anslutning upprättas. När en cookie skickas från servern till klienten är det upp till webbserverprogrammeraren att se till att cookies av denna typ skickas över en säker kanal.
  • bool http endast - om satt till TRUE kommer cookies endast att vara tillgängliga via HTTP-protokollet. Det vill säga, cookies i det här fallet kommer inte att vara tillgängliga för skriptspråk som JavaScript. Denna funktion har föreslagits som en effektiv åtgärd för att minska identitetsstöld genom XSS-attacker (även om den inte stöds av alla webbläsare). Det är dock värt att notera att kring denna möjlighet finns det ofta tvister om dess effektivitet och genomförbarhet. Argumentet lades till i PHP 5.2.0. Kan vara SANT eller FALSKT.

Endast den första parametern krävs. Om du utelämnar den tredje parametern kommer den som standard till noll, vilket innebär att cookies försvinner direkt efter att webbläsaren stängts.

Här är ett exempel på hur du ställer in cookies:

Det här exemplet sätter bara en cookie på klientens dator.

Hämta cookies i PHP

I föregående exempel skickade vi ett kommando till webbläsaren för att skapa en cookie. Nu har den skapat dem, och nästa gång webbläsaren skickar en förfrågan till servern kommer den att skicka innehållet i kakan i förfrågningshuvudet.

I ett PHP-program kan du avgöra om webbläsaren skickade en cookie eller inte mycket enkelt. De är tillgängliga i arrayen $_COOKIE.

Låt oss komplicera det föregående exemplet:

"; print_r($_COOKIE); echo "";

När du öppnar exempelsidan för första gången kommer det inte finnas något bakom hälsningen. Detta beror på att cookies placeras på din dator, men ännu inte har skickats till servern.

Även om det kanske redan finns något i $_COOKIE-arrayen, så är det inte vårt exempel som placerar dessa cookies.

Först efter att ha uppdaterat sidan en andra gång kommer du att se att PHP-programmet fick $_COOKIE => välkomstparet.

Observera att cookies är inställda på en minut, vilket innebär att efter en minut, om du uppdaterar sidan, kommer hälsningen att saknas igen.

Kanske handlar det bara om att komma åt information från cookies i PHP.

Ta bort cookies i PHP

För att radera cookies behöver du bara sätta deras utgångsdatum i preteritum.

Observera att jag har ställt in preteritum med en reserv, om tiden inte är korrekt inställd på klientens dator.

Exempel på hur cookies fungerar i PHP

Låt oss skriva en primitiv räknare för visning av webbplatssidor av en besökare med hjälp av cookies.

Observera att data i detta exempel varar i 60 sekunder, sedan nollställs räknaren.

Detta täcker nästan helt och hållet ämnet att arbeta med cookies i PHP.

PHP stöder transparent HTTP-cookies. Cookies är en mekanism för att lagra data i fjärrwebbläsaren och därmed spåra eller identifiera återvändande användare. Du kan ställa in cookies med hjälp av setcookie() eller setrawcookie() fungera. Cookies är en del av HTTP-huvudet, så setcookie() måste anropas innan någon utdata skickas till webbläsaren. Detta är samma begränsning som rubrik() har. Du kan använda utdatabuffringsfunktionerna för att fördröja skriptutmatningen tills du har bestämt dig för om du vill ställa in några cookies eller skicka några rubriker.

Alla cookies som skickas till servern från klienten kommer automatiskt att inkluderas i en $_COOKIE auto-global array om variables_order innehåller "C". Om du vill tilldela flera värden till en enda cookie, lägg bara till till kakans namn.

15 år sedan

Bara en allmän kommentar om Wiltons kodsnutt: Det anses allmänt vara mycket dålig praxis att lagra användarnamn och/eller lösenord i cookies, oavsett om de är dolda eller inte. Många spionprogram gör en poäng med att stjäla cookie-innehåll.

En mycket bättre lösning skulle vara att antingen använda den inbyggda PHP-sessionshanteraren eller skapa något liknande med ditt eget cookie-baserade sessions-ID. Detta sessions-ID kan kopplas till käll-IP-adressen eller kan få timeout efter behov, men eftersom ID:t kan upphöra att gälla separat från autentiseringskriterierna, äventyras inte själva autentiseringen.

Stuart Livings

9 månader sen

unset($_COOKIE [ "cookie" ]);
?>

Apenas apaga um índice de uma variável, os cookies ainda vão existir e continuar a ser enviados do servidor pro cliente e vice versa.
Assim como isso:

$_COOKIE [ "cookie" ] = "foo bar" ;
?>

Não cria ou altera o valor do cookie, apenas durante a execução atual, o valor que será passado do servidor pro cliente e vice versa será o original

Para exluir ou alterar deve SEMPER sobre escrever o valor antigo com setcookie(), setrawcookie() eller header(), sendo este último não muito comum e dificilmente terá um uso justificável

13 år sedan

13 år sedan

Som svar på lösningen som publicerats i kommentaren nedan finns det några praktiska problem med denna lösning som måste hållas i åtanke och hanteras av din kod. Jag utvecklade en applikation med en liknande "använd-det-en gång"-nyckel för att hantera sessioner och det fungerade utmärkt men vi fick några klagomål om att legitima användare loggade ut utan anledning. Det visade sig att problemet inte var trevande highjacking, det var antingen:

A- Användare dubbelklickar på länkar eller gör 2 klick väldigt snabbt. Samma nyckel skickas för de 2 klicken eftersom den nya nyckeln från det första klicket inte kom till webbläsaren i tid för det andra men sessionen på servern slängde nyckeln för det nya. Det andra klicket orsakar ett avslutande av sessionen (installera LiveHttpHeaders-tillägget på firefox och titta på rubrikerna som skickas när du klickar två gånger mycket snabbt, du kommer att se samma cookie skickad på båda och den nya cookien kommer tillbaka från servern för sent).

B- Av någon given anledning upplever servern en långsam nedgång och svaret med den nya nyckeln (som har ersatt den gamla på servern) returneras inte till webbläsaren tillräckligt snabbt. Användaren tröttnar på att vänta och klickar någon annanstans. Han loggas ut eftersom detta andra klick skickar den gamla nyckeln som inte matchar den du har på din server.

Vår lösning var att sätta upp en respitperiod där den gamla nyckeln fortfarande var giltig (den nuvarande nyckeln och den tidigare nyckeln behölls båda hela tiden, vi använde 15 sekunder som en respitperiod där den gamla nyckeln fortfarande kunde användas). Detta har nackdelen med att öka tidsfönstret för en person att höja sessionen, men om du knyter giltigheten för den gamla nyckeln till en IP-adress och/eller användaragentsträng får du fortfarande ganska bra sessionssäkerhet med väldigt få oönskade sessionsavslutning.

10 år sedan

Det är bättre att notera att inte bifoga dina cookies till och IP och blockera IP om det är annorlunda eftersom vissa människor använder bärbara webbläsare som kommer ihåg cookies. Det är bättre att visa en inloggningsskärm istället om IP:n inte motsvarar sessionskakans IP.

14 år sedan

Jag hittade en lösning för att skydda sessions-ID utan att knyta dem till klientens IP. Varje sessions-ID ger åtkomst för endast EN fråga. Vid nästa fråga genereras och lagras ett annat sessions-ID. Om någon hackar cookien (eller sessions-ID:t) ), kommer den första av användaren och piraten som kommer att använda kakan att koppla bort den andra, eftersom sessions-ID:t har använts.

Om användaren blir frånkopplad kommer han att återansluta: eftersom min policy är att inte ha mer än ett sessions-ID för varje användare (sessionsposter har en UNIK nyckel på kolumnen där användarinloggningen lagras), raderas alla poster för den användaren , ett nytt sessions-ID genereras och lagras på användarnas dirve: piraten kopplas bort. Detta låter piraten vanligtvis bara agera några sekunder. Ju långsammare besökare surfar, desto längre tid får pirater för att hacka. Dessutom, om användare glömmer att uttryckligen avsluta sina sessioner .... ställer några av mina användare in timeout längre än 20 minuter!

VIKTIG ANMÄRKNING: Detta inaktiverar möjligheten att använda bakåtknappen om du skickar sessions-ID via POST eller GET.

12 år sedan

Om du vill ha en säker session som inte är kopplad till klientens IP kan du använda metoden valid-for-one-query nedan, men för att skydda dig mot ett scenario där den legitima användaren klickar två gånger kan du använda en avstängningsfunktion (register_shutdown_function)*.

Det kommer att kontrollera om skriptet avslutades för tidigt (connection_aborted), och återställer det giltiga sessions-ID. På så sätt är det fortfarande giltigt när användaren gör den andra begäran. Om skriptet slutar korrekt kommer det nya sessions-ID:t att användas istället.

Nu, eftersom du inte kan ställa in en cookie från avstängningsfunktionen (efter att utdata har skickats), bör kakan innehålla både det tidigare giltiga sessions-ID och det nya. Sedan kommer serverskriptet att avgöra (vid nästa begäran) vilket en att använda.

:: Pseudo exempel:
::
::
::
:: 1. Hämta sessions-ID:n från cookien
:: 2. Om ett av sessions-ID:n fortfarande är giltigt (det vill säga om det finns ett minne associerat med det - i DB, fil eller vad som helst)
:: ____2.1. Öppna sessionen
:: 3. Skapa ett nytt sessions-ID
:: 4. Spara det nya sessions-ID med det som just användes i cookien
:: 5. Registrera avstängningsfunktion
::
::
::
:: 1. Om skriptet avslutades för tidigt
:: ____1.1. Spara sessionsdata med det gamla sessions-ID:t
:: 2. Annat
:: ____2.1. Spara sessionsdata med det nya sessions-ID:t
:: ____2.2. Se till att det gamla sessions-ID:t läggs till i en lista med ID:n (används för ändamålet som beskrivs nedan)
:: ____2.3. Kasta den gamla sessionslagringen

Det finns fortfarande möjligheten att någon avvikande nätverkssniffare fångar sessionskakan när den skickas till klienten och använder den innan klienten får chansen till det. Således lyckas kapa sessionen.

Om ett gammalt sessions-ID används måste vi anta att sessionen har kapats. Sedan kan klienten bli ombedd att ange sitt lösenord innan data skickas tillbaka. Nu, eftersom vi måste anta att endast den legitima användaren har lösenordet kommer vi inte att skicka tillbaka någon data förrän ett lösenord skickas från en begäran.

Och slutligen, (som en sidanot) kan vi dölja inloggningsdetaljerna (om klienten har stöd för javascript) genom att fånga formuläret när det skickas, ta den aktuella tidsstämpeln och lägga till den i formuläret i ett dynamiskt genererat dolt formulärobjekt, ersätt lösenordsfältet med ett nytt lösenord som är MD5 (eller liknande) för tidsstämpeln och det riktiga lösenordet. På serversidan kommer skriptet att ta tidsstämpeln, titta på användarens riktiga lösenord och göra rätt MD5. Om de matchar, bra, om inte, så fungerar det bara när vi har en användare med en session som är inloggad tidigare, eftersom vi vet vilket lösenord han ska ha.) Om användaruppgifterna sparas som md5(användarnamn+lösenord), fråga bara efter både användarnamn och lösenord, md5 dem och sedan md5 tidsstämpeln och användarens cred.

Om du behöver ett javascript för md5.

Definierar en cookie som ska skickas tillsammans med resten av huvudinformationen. Cookies måste skickas innan andra rubriker (detta är en cookie-begränsning, inte PHP). Detta kräver att du ringer denna funktion innan den första utmatningen till sidan, dvs. till taggen.

int setcookie(strängnamn [, strängvärde [, int expire [, strängsökväg [, strängdomän [, int säker]]]]])

Alla argument utom namn, är valfria. Om endast namnargumentet tillhandahålls kommer cookien med det namnet att raderas från fjärrklienten. Du kan också ersätta vilket argument som helst med en tom sträng ( "" ) för att hoppa över detta argument. Argument upphöra Och säkra dessa är heltal och kan inte passeras med den tomma strängen. Använd noll i dem ( 0 ). Argument upphöra detta är ett normalt Unix-tidsheltal som returneras av funktioner tid() eller mktime(). Argument säkra anger att denna cookie endast ska överföras över en hemlig HTTPS-anslutning.

När cookies väl har ställts in kan de nås när nästa sida laddas via $_COOKIE-arrayen (som kallas $HTTP_COOKIE_VARS i PHP-versioner före 4.1.0).

Vanliga fällor:

    Cookies kommer inte att synas förrän nästa sida laddas.

    Cookies måste raderas med samma parametrar som de installerades med.

PHP 3 har flera samtal setcookie() i samma skript kan köras i omvänd ordning. Om du försöker ta bort en cookie innan du sätter in en annan, måste du infoga den innan raderingen. PHP 4 har flera samtal setcookie() exekveras i den ordning de kallas.

Exempel 1. Skicka cookies med funktionen setcookie().
setcookie("TestCookie", $värde); setcookie("TestCookie", $värde,tid()+3600); // Giltighetsperiod - 1 timme setcookie ("TestCookie", $value,time()+3600, "/~rasmus/", ".utoronto.ca", 1);

När du raderar cookies måste du se till att utgångsdatumet har passerat för att byta mekanism i din webbläsare. Följande är exempel på radering av cookien som skapades i föregående exempel:

Exempel 2: Ta bort cookies med setcookie()
// ställ in utgångsdatumet till en timme sedan setcookie ("TestCookie", "", time() - 3600); setcookie("TestCookie", "", tid() - 3600, "/~rasmus/", ".utoronto.ca", 1);
Exempel 3: Radera alla cookies
foreach($_COOKIE som $ind=>$val) @setcookie($ind,"",time()-999, "/", ".".$_SERVER["SERVER_NAME"]);
Exempel 4.

Observera att värdedelen av cookien automatiskt urlenkodas när cookien skickas, och när den tas emot avkodas den automatiskt och tilldelas en variabel med samma namn som cookienamnet. För att se innehållet i vår testcookie i ett skript, använd bara ett av följande exempel:

Echo $TestCookie; echo $_COOKIE["TestCookie"];

Exempel 5.

Du kan också ställa in arraycookies med hjälp av notationen i cookienamnet. Detta har effekten att ställa in lika många cookies som det finns element i den arrayen, men när cookien hämtas av skriptet placeras värdena i en array som heter cookie:

Setcookie("cookie", "cookietree"); setcookie("cookie", "cookietwo"); setcookie("cookie", "cookieone"); foreach($_COOKIE som $name=>$val) ( echo "$name = $value
\n"; )

Exempel 6.

Om din server har två domännamn: "www.domain.com" och "other.domain.com", och ditt konto tillåter dig att visa sidor från ~/myhome-katalogen, bör du anropa setcookie()-funktionen enligt följande:

Setcookie("namn", $value, time()+3600, "~/myhome", " .domain.com");

Exempel 7. Cookieräknare med setcookie()

Mer om cookies

Hej alla!

Jag är tillbaka på rätt spår! Den senaste tiden har förändringar i livet ofta tvingat mig att flytta bort från bloggen, men ändå är jag här och går ingenstans! Snart kommer det att finnas en serie mycket användbara och informativa lektioner om att tjäna pengar! Missa inte! Under tiden kommer jag att prata om hur man arbetar med cookies i PHP. Hur kan du enkelt skapa, ta bort eller uppdatera cookies i php?

I efterföljande artiklar kommer vi att titta på hur cookies fungerar i WordPress. Under tiden, för allmän utveckling, låt oss titta på själva konceptet med cookies.

Jag kommer inte att skriva plattityder om hur cookies översätts som cookies och allt det där. Denna information är enligt min mening helt värdelös. Låt mig uttrycka det på ett annat sätt, cookies är någon form av information som lagras i din webbläsare.

Du bestämmer dig till exempel för att rösta i en omröstning. Därefter vill du rösta igen, men istället för att acceptera omröstningen visas ett meddelande: "Du har redan röstat." Det verkar som att vi inte registrerade oss på sidan, var kommer informationen ifrån att vi redan har röstat?

Allt handlar om kakorna. När du röstar läggs en liten fil till din webbläsare med information om att du redan har röstat. Och med en ny omröstning kontrollerar scriptet på servern om du har en sådan fil. Om ja betyder det att du redan har röstat. Det är enkelt.

Hur skapar man cookies i php?

Cookies skapas i php tack vare funktionen setcookie. Denna funktion accepterar följande parametrar:

setcookie ("Namn", "Värde", "Term", "Sökväg", "Domän", "Säkerhet");

  • Det finns bara en obligatorisk parameter här - "Namn".
  • "Värde" indikerar värdet på kakan, som alla redan har gissat.
  • Varaktighet – hur länge håller kakorna? Efter utgången kommer cookien att raderas automatiskt. Termen kan vara obestämd om vi inte anger värdet "term". Deadline är satt i bara sekunder!
  • Sökväg - från vilken katalog cookien kommer att vara tillgänglig. (vanligtvis inte specificerat och tillgängligt från alla kataloger)
  • Domän - Domänen anges automatiskt. Om du behöver komma åt cookies på underdomäner kan du ange ".site". I detta fall kommer cookien att vara tillgänglig på alla webbplatser med adresser: name.site
  • Säkerhet - om TRUE skrivs överförs cookies över en krypterad anslutning (ssl).

Skapa cookies i PHP

Om vi ​​nu tittar i webbläsaren (jag använder mozilla), kan vi se cookien i aktion:

Som du kan se sattes kakorna i exakt 1 dag, med det namn vi behövde och det värde vi behövde.

Hur uppdaterar man php cookies?

Låt oss säga att vi behöver uppdatera cookievärdet. De där. namnet kommer att vara detsamma, men värdet eller giltighetstiden måste ändras. I det här fallet behöver vi återigen funktionen setcookie.

Operationen skiljer sig inte från operationen att skapa cookies. Vi skriver liknande kod på samma sätt, men med ändrad data:

Låt oss nu se vad som finns i webbläsaren:

Som du kan se var cookieuppdateringen lyckad!

Hur läser/får man php cookies?

Att kakan visas i webbläsaren är bra, men vi skapar den för att senare kunna använda den i våra skript. Så hur får man en kaka? Det finns ett globalt utbud av cookies för detta ändamål $_COOKIE, som innehåller alla skapade cookies. Det är lätt att kontakta dem - vet bara deras namn.

Cookien kommer nu att raderas!

En viktig anteckning som ingen pratar om. När jag först började lära mig programmering raderade jag cookies på detta sätt. Jag gick in i webbläsaren och kakan fanns kvar. Jag letade igenom alla forum - det här problemet uppstår ofta, men alla svarar som: "Hmm, jag vet inte, det fungerar för mig." Och anledningen är detta: cookien raderas, men inte från användarens filer. Där är hon kvar. Och när du öppnar din webbläsare ser du den, men om vi kommer åt den med hjälp av $_COOKIE["wpguru"], då blir resultatet 0. Så här kan du enkelt kontrollera om kakan har raderats.

Det var allt för mig, fler artiklar kommer att publiceras inom en snar framtid. Troligtvis kommer jag i nästa artikel att beskriva vilka planer som väntar bloggen och berätta i detalj om en serie artiklar om att tjäna pengar. Allt kommer att finnas online, d.v.s. Jag tjänar pengar och skriver en artikel. Jag sänder inte bara en teori.

Så vänta.

Ses snart!

I dagens handledning kommer vi att prata om att arbeta med cookies i PHP. Låt oss börja med vad det är, varför det behövs och varför det dök upp i första hand.

Vad används cookies till?

Som du och jag redan vet kan vi i PHP arbeta med GET- och POST-förfrågningar. De tillåter oss att överföra data till servern för att på något sätt påverka kodens funktion. Vi kan skicka inloggningen och lösenordet till skriptet, det kommer att kontrollera dem och ge oss tillgång till all information. Detta tillåter dock inte att skapa en session mellan oss och servern. Det vill säga, servern kan inte "komma ihåg" oss, och varje gång vi vill säga att det är vi måste vi skicka en separat ny förfrågan med inloggning och lösenord.

Cookies uppfanns som en lösning. Dessa är poster med en nyckel-värde-typ, som en array i PHP, men de lagras i webbläsaren för webbplatsanvändaren. Cookies lagras separat för varje webbplats. Varje gång en användare gör en begäran till en webbplats kontrollerar webbläsaren om dessa poster finns för den webbplatsen. Och om det finns några, skickar den dem i rubriken på varje begäran till den här webbplatsen.

Var kommer kakor ifrån?

Cookies skapas i webbläsaren på "begäran" av servern. Vid något tillfälle beslutar vi att vi måste skapa en cookie med något värde i besökarens webbläsare. För att göra detta måste servern skicka en speciell rubrik i svaret till klienten, som indikerar vilken post som måste skapas i webbläsaren för denna webbplats.

Allt detta sker i bakgrunden och är inte märkbart för användaren. Auktorisering på vilken webbplats som helst fungerar enligt denna princip. I det enklaste fallet, efter att du har skrivit in ditt användarnamn och lösenord på sajten, kontrollerar servern om de är korrekta. Och i så fall kan servern be webbläsaren att lagra denna data i en cookie och skicka den till den med varje begäran.

Det vill säga servern säger ungefär: "Hej, webbläsare, skapa en post för mig med nyckeln "login" och värdet "admin", och en annan med nyckeln "lösenord" och värdet "123". Efter detta börjar webbläsaren skicka ytterligare data som:

Inloggning: administratörslösenord: 123

Efter detta, på andra ställen på sajten där auktorisation krävs, kommer det nu att vara möjligt att kontrollera dessa data från cookien utan att tvinga användaren att fylla i formuläret igen. Och om de är rätt inloggning och lösenord, ge användaren tillgång till något.

Om livstid

Samtidigt har kakan en TTL (Time To Live). Det vill säga att dessa register kan vara tillfälliga. Denna livslängd anges även av servern när cookien installeras i webbläsaren. Tack vare detta kan du få sessionen att ta en halvtimme. Och efter denna tid kommer användaren att behöva logga in igen. Du har förmodligen märkt detta i aktion på många webbplatser.

Hur man arbetar med cookies i PHP

Så vi har en grundläggande förståelse för hur cookies fungerar. Låt oss nu se hur du kan arbeta med dem i PHP.

Låt oss skapa en fil i vårt projekt som heter viewCookies.php. Låt oss lägga in följande kod i den.

Som du borde ha gissat vid det här laget, $_COOKIEär en annan global array i PHP, liknande arrayer $_GET Och $_POST. Endast den lagrar alla cookies som skickades av webbläsaren som en del av den aktuella begäran.

Låt oss titta på hur det här skriptet fungerar genom att öppna sidan i webbläsaren: http://myproject.loc/viewCookies.php

Som vi kan se är denna array för närvarande tom. Låt oss fylla på :) För att göra detta måste vi installera någon form av cookie i webbläsaren. I PHP används funktionen för detta setcookie($namn, $värde, $ttl, $sökväg)

Godkända parametrar:

  • $name – cookienamn
  • $värde – dess värde
  • $ttl – livstid. Om du anger 0 kommer cookien att installeras för alltid (tills den raderas).
  • $path – sökväg i adressfältet. Om du anger "/", kommer cookies att vara tillgängliga från alla kataloger på webbplatsen. Till exempel i både http://myproject.loc/ och http://myproject.loc/posts/ . Om du ställer in "/posts/", kommer cookies endast att vara tillgängliga från katalogen http://myproject.loc/posts/ och alla dess underkataloger (till exempel http://myproject.loc/posts/new/). Standardvärdet är den aktuella katalogen där cookien är installerad. Om vi ​​vill att cookien ska vara tillgänglig på hela webbplatsen måste vi ställa in detta värde till "/".

Det finns flera parametrar till, du kan läsa om dem i den officiella dokumentationen.

Låt oss nu prova den här funktionen i praktiken. Låt oss skapa en fil setCookies.php och skriva följande kod i den:

Efter det, gå till http://myproject.loc/setCookies.php, där vi kommer att se en tom sida. Som vi redan har sagt är det inte synligt för användaren att arbeta med cookies.

Detta arbete kan dock alltid ses i Google Chromes utvecklarkonsol. Låt oss öppna den (genom att trycka på F12), gå till fliken Nätverk, uppdatera sidan i webbläsaren och hitta den i listan över nedladdade data (det är den enda där).

Klicka på denna post och välj fliken Rubriker i fönstret som öppnas till höger. Här, i avsnittet Response Headers, kan vi se Set-Cookie-huvudet med de data vi angav.

Således har cookies installerats framgångsrikt i webbläsaren. Låt oss nu gå till vår sida som visar $_COOKIE-arrayen - http://myproject.loc/viewCookies.php

Som vi kan se skickas cookies som tidigare installerats i webbläsaren nu till servern. Du kan också se dem i förfrågan genom att titta på avsnittet Request Headers i utvecklarkonsolen.

Om du behöver se alla cookies som finns tillgängliga i webbläsaren för en viss webbplats kan du se dem i samma utvecklarkonsol för Google Chrome. För att göra detta, gå till fliken Ansökan, välj alternativet Cookies i listan till vänster och vår webbplats i den.

Alla cookies kommer att presenteras i en bekväm lista.

Vad mer du behöver veta om cookies

Och för att avsluta den här lektionen måste vi lägga till att cookies ställs in med hjälp av en header i serversvaret via HTTP. HTTP-protokollet är utformat på ett sådant sätt att rubriken alltid måste komma före data, och inget annat. Därför måste setcookie-funktionen och alla andra funktioner i PHP som ändrar headern i HTTP-svaret anropas innan någon utdata matas ut.

Du kan ställa in cookien först och sedan visa texten.

Allt kommer att gå jättebra.

Men du kan inte skriva ut texten (som är texten i HTTP-svaret) och sedan försöka ställa in cookien.

Som vi kan se kommer detta att leda till ett fel. Så här fungerar HTTP-protokollet. Först - titeln, sedan - kroppen. Bara på detta sätt och inget annat sätt.

Ställa in flera cookies

Det finns inget enklare än att sätta några cookies. För att göra detta behöver du bara anropa setcookie-funktionen flera gånger.

De kommer att överföras framgångsrikt till kunden.

Vi kommer att titta på ett exempel på fullständig användarinteraktion genom cookies i nästa lektion. Under tiden, låt oss göra våra läxor.

Läser in...Läser in...