Zoeken…


Invoering

Een HTTP-cookie is een klein stukje gegevens dat vanaf een website wordt verzonden en door de webbrowser van de gebruiker op de computer van de gebruiker wordt opgeslagen terwijl de gebruiker browst.

Syntaxis

  • bool setcookie( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] )

parameters

parameter detail
naam De naam van de cookie. Dit is ook de sleutel die u kunt gebruiken om de waarde op te halen uit de $_COOKIE super global. Dit is de enige vereiste parameter
waarde De waarde om in de cookie op te slaan. Deze gegevens zijn toegankelijk voor de browser, dus bewaar hier niets gevoeligs.
vervallen Een Unix-tijdstempel dat aangeeft wanneer de cookie moet verlopen. Indien ingesteld op nul vervalt de cookie aan het einde van de sessie. Indien ingesteld op een lager aantal dan de huidige Unix-tijdstempel, verloopt de cookie onmiddellijk.
pad De reikwijdte van de cookie. Indien ingesteld op / de cookie beschikbaar zijn binnen het gehele domein. Indien ingesteld op /some-path/ dan is de cookie alleen beschikbaar in dat pad en de afstammelingen van dat pad. Standaard ingesteld op het huidige pad van het bestand waarin de cookie wordt ingesteld.
domein Het domein of subdomein waarop de cookie beschikbaar is. Indien ingesteld op het kale domein stackoverflow.com , zal de cookie beschikbaar zijn voor dat domein en alle subdomeinen. Indien ingesteld op een subdomein meta.stackoverflow.com is de cookie alleen beschikbaar op dat subdomein en alle sub-subdomeinen.
beveiligen Wanneer ingesteld op TRUE de cookie alleen ingesteld als er een beveiligde HTTPS-verbinding bestaat tussen de client en de server.
HttpOnly Geeft aan dat de cookie alleen beschikbaar moet zijn via het HTTP / S-protocol en niet beschikbaar moet zijn voor client-side scripttalen zoals JavaScript. Alleen beschikbaar in PHP 5.2 of hoger.

Opmerkingen

Het is vermeldenswaard dat het louter aanroepen van de setcookie niet alleen gegeven gegevens in de $_COOKIE superglobal array plaatst.

Het heeft bijvoorbeeld geen zin om te doen:

setcookie("user", "Tom", time() + 86400, "/");
var_dump(isset($_COOKIE['user'])); // yields false or the previously set value

De waarde is er nog niet, pas wanneer de volgende pagina wordt geladen. De functie setcookie zegt gewoon " bij volgende http-verbinding de client (browser) vertellen deze cookie in te stellen ". Wanneer de headers vervolgens naar de browser worden verzonden, bevatten ze deze cookiekop. De browser controleert vervolgens of de cookie nog niet is verlopen, en als dit niet het geval is, verzendt deze in http-aanvraag de cookie naar de server en dat is wanneer PHP deze ontvangt en de inhoud in de $_COOKIE array $_COOKIE .

Een cookie wordt ingesteld met behulp van de functie setcookie() . Omdat cookies deel uitmaken van de HTTP-header, moet u cookies instellen voordat u uitvoer naar de browser verzendt.

Voorbeeld:

setcookie("user", "Tom", time() + 86400, "/"); // check syntax for function params

Beschrijving:

  • Maakt een cookie met user
  • (Optioneel) De waarde van de cookie is Tom
  • (Optioneel) Cookie verloopt over 1 dag (86400 seconden)
  • (Optioneel) Cookie is beschikbaar op de hele website /
  • (Optioneel) Cookie wordt alleen verzonden via HTTPS
  • (Optioneel) Cookie is niet toegankelijk voor scripttalen zoals JavaScript

Een gemaakte of gewijzigde cookie kan alleen worden geopend op volgende verzoeken (waarbij path en domain overeenkomen), omdat het superglobal $_COOKIE niet $_COOKIE wordt gevuld met de nieuwe gegevens.

Een user naam Cookie ophalen en uitvoeren

De waarde van een cookie kan worden opgehaald met de globale variabele $_COOKIE . Als we bijvoorbeeld een cookie met de naam user hebben, kunnen we deze zo ophalen

echo $_COOKIE['user'];

De waarde van een cookie kan worden gewijzigd door de cookie opnieuw in te stellen

setcookie("user", "John", time() + 86400, "/"); // assuming there is a "user" cookie already

Cookies maken deel uit van de HTTP-header, dus moet setcookie() worden aangeroepen voordat uitvoer naar de browser wordt verzonden.

Zorg er bij het wijzigen van een cookie voor dat het path en de domain van setcookie() overeenkomen met de bestaande cookie, anders wordt er een nieuwe cookie gemaakt.

Het waardegedeelte van de cookie wordt automatisch urlencoded wanneer u de cookie verzendt, en wanneer deze wordt ontvangen, wordt deze automatisch gedecodeerd en toegewezen aan een variabele met dezelfde naam als de cookienaam

Gebruik de isset() -functie op de superglobal $_COOKIE variabele om te controleren of een cookie is ingesteld.

Voorbeeld:

// 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 een cookie te verwijderen, stelt u de vervaldatum in op een tijd in het verleden. Dit activeert het verwijderingsmechanisme van de browser:

setcookie('user', '', time() - 3600, '/');

Wanneer u een cookie verwijdert, moet u ervoor zorgen dat het path en de domain van setcookie() overeenkomen met de cookie die u probeert te verwijderen, of dat er een nieuwe cookie wordt gemaakt die onmiddellijk vervalt.

Het is ook een goed idee om de waarde $_COOKIE voor het geval de huidige pagina deze gebruikt:

unset($_COOKIE['user']);


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow