banner

3.2: Cookies in PHP

Wat is een Cookie ?

Een cookie wordt vaak gebruikt om een gebruiker te identificeren. Een cookie is een klein bestand dat de server nestelt op de computer van de gebruiker. Elke keer dat de zelfde computer een pagina opvraagt met een browser, zal het de cookie meesturen. Met PHP, kan je zowel cookies aanmaken en veranderen.

Hoe maak ik Cookies aan ?

Je kan een Cookie aanmaken met behulp van setcookie(). Op elke pagina waar je cookies wilt gebruiken zet je dus setcookie(). Je moet er voor zorgen dat setcookie() bovenaan in je pagina staat, dus nog voordat je iets anders met je pagina doet. Zet in dit geval dus setcookie() helemaal bovenin je PHP-pagina, nog vóór je <head> of <!DOCTYPE ...> tags, anders zal je pagina errors genereren.

In de setcookie() fuctie kunnen verschillende variabelen worden meegegeven. De belangrijkste zijn de naam, waarde en de verloopdatum. De verloopdatum geeft aan voor hoelang het cookiebestand blijft bestaan. In het voorbeeld is gekozen voor 30 dagen. De time() functie in php wordt gebruikt om de huidige tijd op te vragen.

<?php
$cookie_naam= "beleg";
$cookie_waarde = "Pindakaas";
$cookie_verlooptijd = time() + 86400 * 30;
setcookie($cookie_naam, $cookie_waarde, $cookie_verlooptijd);

?>
<!DOCTYPE ...>

Hoe lees ik cookies-variabelen uit ?

Cookies worden uitgelezen door $_COOKIE['....']. De isset() functie kan gebruikt worden om te controleren of de cookie bestaat. Dit lijkt dus op wat je hebt geleerd bij de vorige paragrafen: $_SESSION['....'] en $_POST['....']

<?php
if(!isset( $_COOKIE['$cookie_naam']))
{
echo "Cookie genaamd '" . '$cookie_naam' . "' bestaat niet!";
}
else
{
echo "Cookie '" . '$cookie_naam' . "' bestaat!";
echo "De waarde is: " . $_COOKIE['$cookie_naam'];
}?>


Hoe verander ik cookie-variabelen ?

Om de waarden van een cookie te veranderen gebruik je opnieuw de setcookie() functie. In het voorbeeld wordt de waarde van de Cookie van Pindakaas verandert naar Hagelslag.

<?php
$cookie_naam= "beleg";
$cookie_waarde = "Hagelslag";
$cookie_verlooptijd = time() + 86400 * 30;
setcookie($cookie_naam, $cookie_waarde, $cookie_verlooptijd);

?>
<!DOCTYPE ...>

Hoe verwijder ik cookie-variabelen ?

Om een cookie te verwijderen gebruiken we opnieuw de setcookie() functie met een verlooptijd in het verleden.

<?php
$cookie_naam= "beleg";
setcookie($cookie_naam, '', time() - 3600);

?>
<!DOCTYPE ...>
OPDRACHT 10

Maak 3 bestanden:
  • één index.html pagina waar een bezoeker een gebruikersnaam en wachtwoord in moet voeren.
  • één verwerken.php pagina die controleert of de bezoeker een juiste combinatie van gebruikersnaam en wachtwoord ingevuld heeft. Als dat het geval is dan wordt er een cookie opgeslagen met daarin de inloggegevens.
  • één verwijderen.php pagina die de cookie verwijdert wanneer er op een knop op de indexpagina wordt gedrukt.
Wanneer de bezoeker een volgende keer de pagina bezoekt moet de gebruikersnaam worden onthouden.

N.B. Bedenk goed waar je de cookie variabelen aanmaakt.