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.

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 och domain matchar) eftersom superglobal $_COOKIE inte $_COOKIE med de nya uppgifterna omedelbart.

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'];

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åste setcookie() innan någon utgång skickas till webbläsaren.

När du ändrar en cookie Se till path och domain parametrar för setcookie() ö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

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'; 

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 och domain parametrar för setcookie() 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']);


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow