PHP
koekjes
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
.
Cookie instellen
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
endomain
overeenkomen), omdat het superglobal$_COOKIE
niet$_COOKIE
wordt gevuld met de nieuwe gegevens.
Cookie ophalen
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'];
Cookie wijzigen
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 dedomain
vansetcookie()
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
Controleren of een cookie is ingesteld
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';
Cookie verwijderen
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 dedomain
vansetcookie()
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']);