PHP
Småkakor
Sök…
Introduktion
En HTTP-cookie är en liten bit data som skickas från en webbplats och lagras på användarens dator av användarens webbläsare medan användaren surfar.
Syntax
bool setcookie( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] )
parametrar
parameter | detalj |
---|---|
namn | Kakans namn. Det här är också nyckeln du kan använda för att hämta värdet från $_COOKIE . Detta är den enda obligatoriska parametern |
värde | Värdet att lagra i cookien. Denna information är tillgänglig för webbläsaren så lagra inte något känsligt här. |
upphöra | En Unix-tidsstämpel som representerar när cookien ska löpa ut. Om den är inställd på noll kommer cookien att löpa ut i slutet av sessionen. Om det är inställt på ett nummer som är mindre än den nuvarande Unix-tidsstämpeln, kommer cookien att upphöra omedelbart. |
väg | Cookies räckvidd. Om inställt till / kommer cookien att vara tillgänglig inom hela domänen. Om den är inställd på /some-path/ kommer cookien bara att finnas tillgänglig på den sökvägen och efterkommare till den sökvägen. Standardvärdet för den aktuella sökvägen för filen som cookien ställs in i. |
domän | Domänen eller underdomänet cookien är tillgänglig på. Om den är inställd på bara domänen stackoverflow.com kommer cookien att vara tillgänglig för den domänen och alla underdomäner. Om det är inställt på ett underdomän meta.stackoverflow.com kommer cookien att vara tillgänglig endast på det underdomänet och alla underdomäner. |
säkra | När inställt till TRUE kommer cookien bara att ställas in om det finns en säker HTTPS-anslutning mellan klienten och servern. |
Httponly | Anger att cookien bara ska göras tillgänglig via HTTP / S-protokollet och inte ska vara tillgänglig för skriptspråk för klientsidan som JavaScript. Endast tillgängligt i PHP 5.2 eller senare. |
Anmärkningar
Det är värt att notera att bara åberopa setcookie
funktion inte bara sätter givna data i $_COOKIE
superglobal array.
Till exempel är det inget att göra:
setcookie("user", "Tom", time() + 86400, "/");
var_dump(isset($_COOKIE['user'])); // yields false or the previously set value
Värdet är inte där ännu, inte förrän nästa sida laddas. Funktionen setcookie
säger bara " med nästa http-anslutning säg klienten (webbläsaren) att ställa in denna cookie ". Sedan när rubrikerna skickas till webbläsaren innehåller de denna cookie-rubrik. Webbläsaren kontrollerar sedan om kakan inte har gått ut ännu, och om inte, skickar den i http-begäran kakan till servern och det är när PHP tar emot den och sätter innehållet i $_COOKIE
matris.
Ställa in en cookie
En cookie ställs in med setcookie()
. Eftersom kakor är en del av HTTP-huvudet måste du ställa in cookies innan du skickar någon utgång till webbläsaren.
Exempel:
setcookie("user", "Tom", time() + 86400, "/"); // check syntax for function params
Beskrivning:
- Skapar en cookie med
user
- (Valfritt) Cookies värde är
Tom
- (Valfritt) Cookie upphör om en dag (86400 sekunder)
- (Valfritt) Cookie är tillgängligt på hela webbplatsen
/
- (Valfritt) Cookie skickas endast via HTTPS
- (Valfritt) Cookie är inte tillgänglig för skriptspråk som JavaScript
En skapad eller modifierad cookie kan endast nås på efterföljande förfrågningar (där
path
ochdomain
matchar) eftersom superglobal$_COOKIE
inte$_COOKIE
med de nya uppgifterna omedelbart.
Hämtar en cookie
Hämta och mata ut en cookie-namngiven user
Värdet på en cookie kan hämtas med den globala variabeln $_COOKIE
. exempel om vi har en cookie med namnet user
vi hämta den så här
echo $_COOKIE['user'];
Ändra en cookie
Värdet på en cookie kan ändras genom att återställa cookien
setcookie("user", "John", time() + 86400, "/"); // assuming there is a "user" cookie already
Cookies är en del av HTTP-huvudet, så
setcookie()
måstesetcookie()
innan någon utgång skickas till webbläsaren.
När du ändrar en cookie Se till
path
ochdomain
parametrar försetcookie()
överensstämmer med befintlig cookie eller ett nytt cookie kommer skapas istället.
Värdedeln för cookien kodas automatiskt när du skickar cookien, och när den tas emot avkodas den automatiskt och tilldelas en variabel med samma namn som cookie-namnet
Kontrollera om en cookie är inställd
Använd isset()
-funktionen på superglobal $_COOKIE
variabeln för att kontrollera om en cookie är inställd.
Exempel:
// PHP <7.0
if (isset($_COOKIE['user'])) {
// true, cookie is set
echo 'User is ' . $_COOKIE['user'];
else {
// false, cookie is not set
echo 'User is not logged in';
}
// PHP 7.0+
echo 'User is ' . $_COOKIE['user'] ?? 'User is not logged in';
Ta bort en cookie
Om du vill ta bort en cookie ställer du in utgångstidsstämpeln till en tidpunkt tidigare. Detta utlöser webbläsarens borttagningsmekanism:
setcookie('user', '', time() - 3600, '/');
När du tar bort en cookie Se till
path
ochdomain
parametrar försetcookie()
matchar cookien du försöker ta bort eller en ny cookie, som löper ut omedelbart, kommer att skapas.
Det är också en bra idé att ställa in $_COOKIE
värdet om den aktuella sidan använder det:
unset($_COOKIE['user']);