Jump to content

[TUT] Cookies


David22

Recommended Posts

Tutorial



Cookies

Inleiding

Als je al een tijdje bezig bent met PHP, wil je na verloop van tijd ook variabelen op kunnen slaan die je ook in andere bestanden kan gebruiken. Hier zijn meerdere manieren voor, een van deze manieren is mer cookies. Hoe dit werkt, ga ik in deze tutorial bespreken.

Wat zijn cookies?

Cookies zijn variabelen die in de vorm van een bestandje worden opgeslagen op de cliëntcomputer, dus bij de persoon die de website opent, en niet op de server. Cookies zijn bruikbaar als je bijvoorbeeld een accountsysteem wilt maken waarbij een gebruiker automatisch uitgelogd wordt na een bepaald aantal minuten, omdat je ook de "houdbaarheidsdatum" van de cookie kan instellen.

Hoe maak ik een cookie?

Vrij simpel, voor het maken van een cookie heb je de volgende code:

<?php
setcookie($naam, $waarde, $houdbaarheid, $pad, $domein, $beveiligd, $httponly);
?>

Wat houd dit in?

$naam: Naam van de cookie

$waarde: Inhoud van de cookie-variabele

$houdbaarheid: Tot wanneer de cookie geldig is (werkt met Unix-timestamp)

$pad: Voor welke map (inclusief submappen) de cookie geldig is (zet je dit bijvoorbeeld op /Random/, geldt dit voor /Random/, /Random/Signature/, /Random/Signature/Map/, /Random/Map/, etc).

$domein: Voor welk domein de cookie geldig is. Zet je 'm op .mijndomein.nl, geldt ie voor alle domeinen. Ze je 'm op david.mijndomein.nl, geldt hij alleen voor dat domein.

$beveiligd: Zet je dit op true, wordt de cookie alleen verzonden over een beveiligde (https) verbinding

$httponly: Zet je dit op true, is de cookie alleen geldig voor het http-protocol, en kan hij dus niet worden benaderd vanuit andere talen, bijvoorbeeld JavaScript.

LET OP: $naam is de enige parameter uit dit rijtje welke verplicht is!

Wat is het verschil tussen het maken van een normale variabele en het maken van een cookievariabele?

Dit valt het beste uit te leggen door het script gewoon te plaatsen, hieronder zie je 4 scripts. Twee voor de gewone variabelen, en twee voor cookievariabelen. Eentje is voor een string, andere voor een integer (getal).

<?php
// Gewone variabelen:
// String:
$string = "Inhoud";

// Integer:
$getal = 22;


// Cookies:
// String:
setcookie("string", "Inhoud");

// Integer:
setcookie("getal", 22);
?>

Ik hoop dat dit tot zover duidelijk is. Nu gaan we door met de volgende stap.

Een cookie maken welke een uur geldig is

De "houdbaarheidsdatum" van een cookie werkt met de Unix-timestamp, het aantal seconden wat verstreken is sinds 1 Januari 1970, 00:00 GMT. Wil je dus een cookie maken maken welke een uur geldig is, doe je dat op de volgende manier:

<?php
$tijd = time(); // unix timestamp wat nu geldig is
$overeenuur = $tijd + 60*60; // nu, plus 60 keer 60 seconden ( = 1 uur)
setcookie("string", "inhoud", $overeenuur); // cookie instellen
?>

Of, in een verkorte versie:

<?php 
setcookie("string", "inhoud", time() + 60*60);
?>

De houdbaarheidsdatum kan je dus berekenen door de functie time() te gebruiken, en daar het aantal seconden wat de cookie geldig moet zijn bij op te tellen. Moet je cookie een week geldig blijven, gebruik je dus deze code:

time() + 7 * 24 * 60 * 60

7 dagen, 24 uur, 60 minuten, 60 seconden. Lastig uit te leggen, maar simpel te begrijpen, hoop ik.

De andere parameters van de setcookie() functie valt verder niet heel veel over uit te leggen, dit staat hierboven allemaal al.

Een cookievariabele oproepen

Okee, heel leuk en aardig allemaal, maar hoe gebruik ik deze variabelen nou? Ik weet niet of je ooit hebt gewerkt met superglobale arrays als $_POST en $_GET, maar er is ook zo'n variabele voor cookies. Niet geheel onverwachts heet deze $_COOKIE. Heb je een cookie met setcookie() dus de naam "string" gegeven, roep je deze op de volgende manier op:

<?php 
echo $_COOKIE['string'];
?>

Vrij simpel dus.

Kennis in de praktijk brengen

Okee, ik ga ervan uit dat je nu de basisbeginselen kent. Daarom ga ik je een opdracht geven. Maak een script die het volgende doet:

  • Naam van de cookie is David22
  • De inhoud van de cookie is een getal, 22
  • De cookie verloopt in 22 uur
  • De cookie is geldig voor de map /22David/ van het domein david.mijndomein.nl
  • De cookie is niet alleen geldig voor HTTP
  • De cookie hoeft niet beveiligd verzonden te worden
  • Echo de inhoud van de cookie

Het script komt er zo uit te zien:

<?php
setcookie("David22", 22, time() + 22*60*60, "/22David/", "david.mijndomein.nl", false, false);
echo $_COOKIE['David22'];
?>

Ik hoop dat de basis van cookies nu een beetje duidelijk zijn, maar mag dit niet zo zijn kan je natuurlijk altijd vragen stellen!

David22

Link to comment
Delen op andere websites

Goeie tut, alleen 1 opmerking: '7 dagen, 24 uur, 60 minuten, 60 seconden' staat een beetje misleidend, alsof hij nu over 8 dagen en 61 minuten verloopt (optellen).

Voor degenen die het niet snappen is dit misschien een betere uitleg:

7 dagen * 24 uren/dag * 60 minuten/uur * 60 seconden/minuut

7 dagen * 24 uren per dag * 60 minuten per uur * 60 seconden per minuut

verder top!

Link to comment
Delen op andere websites

Een reactie plaatsen

Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.

Gast
Op dit onderwerp reageren...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.
×
×
  • Create New...