Cookies: Gegevens van je website onthouden

Sommige websites onthouden wanneer je die voor het laatst hebt bezocht of hoeveel keer je er al bent geweest. Deze site doet dat ook. Hier staat beschreven hoe je dat kunt doen.

De code staat onderaan deze bladzijde. Je kunt hem ook downloaden.

Voor het onthouden van gegevens van je site zijn er drie mogelijkheden: In een database op de server, in Web storage (ook wel localStorage genoemd of in een zg. "cookie" op je PC. De laatste methode wordt hier besproken.

De meeste moderne browsers kunnen worden ingesteld om cookies te weigeren. In de praktijk betekent dat dat ze helemaal niet meer worden gebruikt. Dat geldt dus ook voor bestaande cookies.

Ook deze site plaatst cookies. Daarin worden twee dingen bijgehouden:

  1. De datum en het tijdstip van het laatste bezoek. Dit wordt onderaan de startpagina getoond.
  2. Het aantal keren dat je hier al geweest bent. Dat zie je in de linker kolom, helemaal onderaan.
De code voor het onderhouden van de cookies vind je in de file bbcookie.js, die je kunt downloaden. Naast de hierboven genoemde cookies is er ook nog de mogelijkheid om je naam te onthouden. Als die niet bekend is wordt er om gevraagd. Als je op de knop hieronder drukt verschijnt er een prompt waar je je naam in kunt vullen. Daarna komt er een window waar de gegevens uit de cookie van deze site worden weergegeven. Daar is ook een knop waarmee je de gegevens uit de cookies kunt wissen. Om het goed te laten werken is het noodzakelijk dat je browser cookies accepteert.

Druk op de knop om de cookies te proberen. 

De inhoud van een cookie
In een cookie staan maximaal tien blokken met data, waarvan je er acht in kunt stellen. In de praktijk is dat één lange string, gescheiden door punt-komma's. Elk datablok heeft een naam en meestal ook een waarde. Ze hoeven niet in een bepaalde volgorde te staan. De naam bepaalt wat de browser er mee doet.

Er zijn twee soorten cookies:

Naam Omschrijving
domain Domein van de site die de cookie plaatst. Optioneel, als je het weglaat wordt door het de browser ingesteld op het pad naar de map waar de root van de site is.
Voor deze site: home.hccnet.nl
"domain=home.hccnet.nl"
path Pad naar de map met het HTML-document dat de cookie plaatst. Optioneel, als je het weglaat wordt door het de browser ingesteld op het pad naar de map waar de root van de site is.
Voor deze site: /s.f.boukes.
Als je deze pagina opent met een deep-link (dus zonder frames) is het: /s.f.boukes/html-0.
"path=s.f.boukes/"
name Naam van de cookie. Tenminste één is verplicht aanwezig. Deze site gebruikt de namen VisitorName, WWhenH en WWHCount.
"WWHCount=17"
Secure Optioneel. Geeft aan of je een onbeveiligde (http:) of beveiligde https:) verbinding gebruikt. Als je site een http:-verbinding gebruikt moet je Secure weglaten, anders worden de cookies wel gelezen, maar kunnen ze niet worden bijgewerkt. Als je site een https:-verbinding gebruikt kun je Secure toevoegen. Dan wordt de uitwisseling van cookies tussen de client en de server meegenomen in de beveiliging.
"Secure" Dit is alleen een keyword, er is geen data aan gekoppeld.
N.B. In moderne browsers werken cookies alleen als het http:- of https:-protocal wordt gebruikt. Het werkt niet (meer) met het file:-protocol (een HTML-document dat op je PC openen in je browser door het aan te klikken).
HttpOnly Optioneel. Geeft aan dat de cookie niet mag worden aangepast door JavaScript.
"HttpOnly" Dit is alleen een keyword, er is geen data aan gekoppeld.
expires Optioneel. Als dit wordt weggelaten heb je een session-cookie, anders heb je een permanente cookie. De datum wordt opgeslagen als Greenwich Mean Time (GMT).
Deze site zet de vervaldatum op 30 dagen na de datum van de systeemklok, maar je daarvoor kiezen wat je wilt.
"expires=" + uiterlijk.toGMTString()
SameSite Dit keyword kan drie waarden krijgen: Lax, Strict en None.
Lax wordt gebruikt als SameSite niet wordt opgegeven. Het betekent in de praktijk dat de cookie wordt verstuurd met de HTTP-methode GET, in plaats van POST, wat veiliger is. Cookies van third-parties worden geaccepteerd.
Strict Betekent dat de cookie alleen wordt geaccepteerd als die wordt gezet voor en door de site (lees: URL) die in de adresbalk van de browser staat. De cookie wordt verstuurd met POST.
None wordt gebruikt om aan te geven dat cookies worden geaccepteerd van third-parties, dus van buiten de URL. Een voorbeeld daarvan is het gebruik van tracking cookies.
SameSite=None Kan alleen op een beveiligde verbinding (https:) worden gebruikt, en moet daarom worden gecombineerd met Secure. Default-waarde is Lax.
Created Datum en tijdstip dat de cookie is gemaakt. Dit wordt door de browser ingesteld. Je kunt dit niet zelf aanpassen
Accessed Datum en tijdstip dat de cookie is gelezen en/of veranderd. Dit wordt door de browser ingesteld. Je kunt dit niet zelf aanpassen

Het is verstandig om regelmatig de cookies die je verzamelt te controleren en de "rommel" weg te gooien. Dat geldt voor willekeurig welke browser je gebruikt.
Gooi de gegevens niet zomaar weg, maar gebruik altijd "officiële" software om cookies op te ruimen. Er worden namelijk indexen van bijgehouden, die in de war raken als je zomaar gegevens verwijdert.

Let bij het controleren van cookies ook op de vervaldatum. Het bewaren van verlopen cookies heeft geen zin. Cookies die nog heel lang geldig blijven, zijn nog wel eens afkomstig van sites die andere dingen met cookies willen doen dan datgene waar ze voor bedoeld zijn.
Cookies met een verlopen geldigheid behoren automatisch te worden verwijderd. De praktijk leert dat dat niet altijd gebeurt. Om de verlopen cookies met de hand te vinden en te verwijderen kun je speciaal daarvoor gemaakte programma's gebruiken, bijvoorbeeld ChromeCookiesView van Nirsoft. Daarmee kun je de cookies van Chromium-browsers bekijken en -indien gewenst- verwijderen.
Voor andere dan Chromium-gebaseerde browsers -waaronder FireFox- ben je aangewezen op de instellingen in de browser zelf. Overigens kun je in elke goede, moderne browser de cookies bekijken en beheren.

Gegevens in een cookie zetten
Je geeft minstens twee en hoogstens negen dingen op: De naam van een variabele, de waarde van die variabele, de vervaldatum, een path, een domain en secure.
Deze site gebruikt alleen naam, waarde en vervaldatum. In de meeste gevallen is dat voldoende. Voor de niet-gebruikte zaken worden lege strings opgeslagen.
De vervaldatum wordt berekend door 30 dagen op te tellen bij de tijd van de systeem-klok.
De vervaldatum bevat de datum en het tijdstip. Vervallen cookies verdwijnen niet uit zichzelf.
In JavaScript gebruik je iets als document.cookie = str, waar in str de inhoud is van de volledige cookie. Zie de file bbcookie.js.

Gegevens uit een cookie ophalen
Je vraagt de waarde van een variabele op en krijgt die terug in een string. Zonodig moet je die nog nabewerken om de verschillende onderdelen (vervaldatum, path, etc.) er uit te filteren. Voorwaarde is wel dat de vervaldatum niet is verstreken, anders krijg je een lege string terug. Hierop kun je testen in je JavaScript, zodat je kunt beslissen hoe het script verder gaat.
In JavaScript gebruik je iets als var str = document.cookie, waar in str de inhoud is van de volledige cookie. Dat is een sting, waarin de datablokken zijn gescheiden door een puntkomma. Daar moet je nog het een en ander aan worden gedaan om het gewenste gegeven eruit te halen, Zie de file bbcookie.js.

Cookie verwijderen
Dit doe je door de vervaldatum te veranderen in een moment dat al verstreken is. De cookie is dan "expired". De browser verwijdert de gegevens niet uit zichzelf, dat moet je zelf doen.
De meeste sites zijn heel slordig met cookies. Het is goed om niet méér gegevens te bewaren dan die echt nodig zijn.

Cookie beveiligen
Voor het beveiligen van cookies zijn er twee mogelijkheden.
Je kunt aan de cooke het keyword Secure toevoegen. Dan wordt de cookie-communicatie tussen de server en de client versleuteld. Dit werkt alleen als je een https:-verbinding gebruikt. Bij een http:-verbinding zoals deze site moet je Secure weglaten, anders vindt er geen communicatie plaats.
De tweede mogelijkheid is door HttpOnly aan je cookie toet te voegen. In dat geval zal de browser niet toestaan dat de cookie door JavaScript wordt gewijzigd. Dit heeft alleen zin als de cookie door de server wordt gemaakt.

Waar staan de cookies?
Een veel gestelde vraag is waar de cookies worden opgeslagen op de harde schijf. Hieronder een overzicht voor moderne en wat oudere browsers.

Browsers die zijn gebaseerd op Chromium
De cookies worden bij elkaar opgeslagen in een bestand:
• In Chrome:
  C:\Users\gebruiker\AppData\Local\Google\Chrome\
    User Data\Default\Cookies
• In Edge (Windows 1709 en later):
  C:\Users\gebruiker\AppData\Local\Microsoft\Edge\
    User Data\Default\Cookies
FireFox
De cookies van alle bezochte websites worden in één file verzameld. Deze file heeft de naam cookies.sqlite. Deze file staat in het Firefox gebruikerspofiel.

Gebruik:

De code ziet er als volgt uit:
 
(Zet dit JavaScript bij voorkeur in de <HEAD>)

<script src="bbcookie.js"></script>
 
In de <BODY> zet je code om gegevens uit de cookies op te halen, bijvoorbeeld:
  <script>
  document.write('Uw Naam:'+Who()+'<br>');
  document.write('Aantal bezoeken:'+Count()+'<br>');
  document.write('Laatste bezoek:'+When()+'<br>');
  </script>

Downloaden:
 
Druk op de knop: Download deze code  File: voorb054.zip, 1739 bytes.

Opmerking:
 
Je kunt de bezoekteller in de linker kolom ("U was hier al ... keer") terugzetten op 0 door er op te klikken. Bij je volgende bezoek aan deze site staat de teller weer op nul.

 
terug

html-054; Laatste wijziging: 24 april 2020