Tutorials
Cookies
Uitleg over het gebruiken van cookies. Hoe het precies werkt, wat de parameters zijn en hoe je deze gebruikt, wat valkuilen zijn, hoe ze ge-set kunnen worden en hoe verwijderd. Alles wordt in deze tutorial uitgelegd.
Pagina 1
Wat zijn cookies?
Cookies zijn ontwikkeld om te bekijken of de bezoeker al eens eerder op de website is geweest, om of bij te houden op welke pagina de bezoeker al eerder geweest is. Ook worden cookies gebruikt bij online shops (wat de bezoeker allemaal heeft besteld) of om een login ID te onthouden. Cookies activeren webservers om data op te vragen als op te slaan op de bezoeker's hun hardeschrijf.
Cookies zijn simpele tekst strings die hetzelfde werken als formulieren (name=inhoud) welke enkel opgeslagen worden op de bezoeker zijn hardeschijf. Een URL adres is samengesteld met elke cookie. Deze URL wordt gebruikt om aan de bezoekers kant te detecteren wanneer hij een cookie moet sturen naar de vragende server.
Er zijn specifieke beperkingen om misbruik van cookies tegen te gaan. Ten eerste is een browser beperkt tot 300 cookies en 20 cookies per server. Als een applicatie meer data kwijt moet, zou de data aan de server kant opgeslagen moeten worden (dit kan gedaan worden via sessions (PHP 4.0) of via een database). Ten tweede worden cookies alleen verstuurd wanneer de server er om vraagt en waneer ze toestemming van de server krijgen om verstuurd te worden. Omdat cookies soms vertrouwelijke gegevens bevatten, zou het een beveiligings breek kunnen betekenen wanneer dit uitlekt.
Het is een roddel als er gezegd word dat cookies gevaarlijk zijn. Terwijl cookies op allerlei manieren gebruikt kunnen worden door serverkant applicaties, geeft dit geen risico voor jou als gebruiker. Cookies, zoals ze gedocumenteerd zijn, kunnen niet je hardeschijf formateren, dingen terug sturen over je systeem of je inschrijven voor een mailinglijst. Cookies zijn dus geheel veilig voor jou, als gebruiker.
Cookies zijn simpele tekst strings die hetzelfde werken als formulieren (name=inhoud) welke enkel opgeslagen worden op de bezoeker zijn hardeschijf. Een URL adres is samengesteld met elke cookie. Deze URL wordt gebruikt om aan de bezoekers kant te detecteren wanneer hij een cookie moet sturen naar de vragende server.
Er zijn specifieke beperkingen om misbruik van cookies tegen te gaan. Ten eerste is een browser beperkt tot 300 cookies en 20 cookies per server. Als een applicatie meer data kwijt moet, zou de data aan de server kant opgeslagen moeten worden (dit kan gedaan worden via sessions (PHP 4.0) of via een database). Ten tweede worden cookies alleen verstuurd wanneer de server er om vraagt en waneer ze toestemming van de server krijgen om verstuurd te worden. Omdat cookies soms vertrouwelijke gegevens bevatten, zou het een beveiligings breek kunnen betekenen wanneer dit uitlekt.
Het is een roddel als er gezegd word dat cookies gevaarlijk zijn. Terwijl cookies op allerlei manieren gebruikt kunnen worden door serverkant applicaties, geeft dit geen risico voor jou als gebruiker. Cookies, zoals ze gedocumenteerd zijn, kunnen niet je hardeschijf formateren, dingen terug sturen over je systeem of je inschrijven voor een mailinglijst. Cookies zijn dus geheel veilig voor jou, als gebruiker.
Pagina 2
Werking van cookies?
De extra informatie van een cookie wordt gedefineerd door de webserver. Deze reactie bevat onderandere deze informatie:
- Validatie informatie (bijvoorbeeld: 25/06/2002, 03:00:00)
- Path informatie (bijvoorbeeld: /cgi-bin/php)
- Domein informatie (bijvoorbeeld: phphulp.nl)
- Een beveiligings parameter
De validatie informatie is om te checken of een cookie nog steeds geldig is. Als een cookie eenmaal is verlopen, zal de client het niet langer naar de webserver sturen. Deze tijd is opgegeven in GMT. Als er geen validatie data is gespecificeerd, zal de client de cookie verwijderen wanneer de browser wordt gesloten. De path informatie specificeerd de directory's op de webserver waarvoor de cookie is bestemd. Als het cookie path en de URL niet overeenkomen, zal de client de cookie niet versturen.
De domain informatie detecteerd de domain waarvoor de cookie geldig is. We kunnen het limiet van de webserver specificeren naar een bepaalde host (bijvoorbeeld "webserver.com") of een compleet domain (bijvoorbeeld ".webserver.com). Let op de "."! Dit laat de cookie toe om gedeeld te worden tussen meerdere servers. Als voorbeeld, een grote website zou de hostnames www1.site.nl, www2.site.nl etc. kunnen gebruiken. Als de domain informatie ge-set is naar ".site.nl", kan de cookie aangeroepen worden vanaf al die hosts.
Als de beveiligings parameter is geactiveerd, zal de cookie alleen verzonden worden over beveiligde connecties (bijvoorbeeld over de HTTPS protocol). Een beveiligde connectie kan niet gelezen worden door derde partijen, dus de data kan niet gestolen worden. Als deze parameter niet ge-set is, zal de cookie verstuurd worden naar alle connecties, dus ook beveiligde.
Dit zijn de standaard parameters, indien deze niet gedefineerd worden:
path -> "/" (alle directory's op de server)
domain -> De domain van de server waar de cookie wordt ge-set
validatie informatie -> totdat de browser gesloten is
Beveiligings parameter -> uitgeschakeld
- Validatie informatie (bijvoorbeeld: 25/06/2002, 03:00:00)
- Path informatie (bijvoorbeeld: /cgi-bin/php)
- Domein informatie (bijvoorbeeld: phphulp.nl)
- Een beveiligings parameter
De validatie informatie is om te checken of een cookie nog steeds geldig is. Als een cookie eenmaal is verlopen, zal de client het niet langer naar de webserver sturen. Deze tijd is opgegeven in GMT. Als er geen validatie data is gespecificeerd, zal de client de cookie verwijderen wanneer de browser wordt gesloten. De path informatie specificeerd de directory's op de webserver waarvoor de cookie is bestemd. Als het cookie path en de URL niet overeenkomen, zal de client de cookie niet versturen.
De domain informatie detecteerd de domain waarvoor de cookie geldig is. We kunnen het limiet van de webserver specificeren naar een bepaalde host (bijvoorbeeld "webserver.com") of een compleet domain (bijvoorbeeld ".webserver.com). Let op de "."! Dit laat de cookie toe om gedeeld te worden tussen meerdere servers. Als voorbeeld, een grote website zou de hostnames www1.site.nl, www2.site.nl etc. kunnen gebruiken. Als de domain informatie ge-set is naar ".site.nl", kan de cookie aangeroepen worden vanaf al die hosts.
Als de beveiligings parameter is geactiveerd, zal de cookie alleen verzonden worden over beveiligde connecties (bijvoorbeeld over de HTTPS protocol). Een beveiligde connectie kan niet gelezen worden door derde partijen, dus de data kan niet gestolen worden. Als deze parameter niet ge-set is, zal de cookie verstuurd worden naar alle connecties, dus ook beveiligde.
Dit zijn de standaard parameters, indien deze niet gedefineerd worden:
path -> "/" (alle directory's op de server)
domain -> De domain van de server waar de cookie wordt ge-set
validatie informatie -> totdat de browser gesloten is
Beveiligings parameter -> uitgeschakeld
Pagina 3
Cookies in PHP
Cookies worden ondersteund door PHP, zodat PHP programmeurs volledig gebruik kunnen maken van deze techniek. Het lezen van cookies in PHP is net zo makkelijk als het lezen van variabeles. Als voorbeeld, als er een cookie ge-set is met de naam 'gebruikersnaam' met als data 'Jan Jansen' zal de variabele $gebruikersnaam 'Jan Jansen' bevatten.
Onthoud dat de cookie alleen aanspreekbaar is waneer de client cookies accepteerd en de cookie terug stuurd naar de server.
Laten we beginnen.
Laten we beginnen met een simpel voorbeeld waar we tellen hoevaak de bezoeker onze site heeft bekeken. Om dit te doen gebruiken we een enkele cookie genaamd 'count' welke het nummer van de bezoeken opslaat. PHP maakt automatisch een variabele $count beschikbaar indien de cookie is verzonden door de user agent (door de browser). We gebruiken de setcookie() functie om een aanvraag naar de browser te sturen om de cookie te setten. Deze aanvraag update of set de cookie bij de client. Deze code MOET voor elke andere code of tekst geprogrammeerd worden anders zal het uitkomen op een foutmelding.
Het script telt de $count variabele op en verstuurd de opgetelde inhoud weer terug naar de user agent gebruikmakende van setcookie(). Als de user agent de cookie niet naar ons gestuurd heeft, zal PHP de variabele omzetten naar 0 als we hem beginnen te gebruiken. De eerste parameter van setcookie() is de naam van de cookie en de tweede parameter is de inhoud welke we willen onthouden. Aan het einde gebruiken we simpelweg een welkom's bericht.
Een vaak voorkomende fout is dat setcookie() aangeroepen wordt, nadat er al eerder content verstuurd is aan de user agent. Dit gebeurd wanneer er tekst of code en zelfs lege spaties staan voordat setcookie aangeroepen wordt. Zelfs het witte spatie karakter (een newline) kan genoeg zijn voor setcookie() om niet te werken.
PHP zal automatisch een foutmelding weergeven als setcookie() aangeroepen wordt, nadat er al eerdere data verstuurd is.
!! DE FOUTMELDING !!
Hier staat wat tekst. De volgende setcookie() zal fout gaan omdat we nu al informatie naar de browser sturen.
<B>Warning:</B> Cannot add header information - headers already sent in path/path/filenaam.php on line 5
Indien je de foutmeldingen uit hebt gezet, zal dit probleem erg moeilijk te herkennen zijn.
Onthoud dat de cookie alleen aanspreekbaar is waneer de client cookies accepteerd en de cookie terug stuurd naar de server.
Laten we beginnen.
Laten we beginnen met een simpel voorbeeld waar we tellen hoevaak de bezoeker onze site heeft bekeken. Om dit te doen gebruiken we een enkele cookie genaamd 'count' welke het nummer van de bezoeken opslaat. PHP maakt automatisch een variabele $count beschikbaar indien de cookie is verzonden door de user agent (door de browser). We gebruiken de setcookie() functie om een aanvraag naar de browser te sturen om de cookie te setten. Deze aanvraag update of set de cookie bij de client. Deze code MOET voor elke andere code of tekst geprogrammeerd worden anders zal het uitkomen op een foutmelding.
<?
$_COOKIE['count']++;
setcookie('count', $_COOKIE['count']);
?>
Welkom! Je hebt deze website
<? echo $_COOKIE['count']; ?>
keer bekeken!Het script telt de $count variabele op en verstuurd de opgetelde inhoud weer terug naar de user agent gebruikmakende van setcookie(). Als de user agent de cookie niet naar ons gestuurd heeft, zal PHP de variabele omzetten naar 0 als we hem beginnen te gebruiken. De eerste parameter van setcookie() is de naam van de cookie en de tweede parameter is de inhoud welke we willen onthouden. Aan het einde gebruiken we simpelweg een welkom's bericht.
Een vaak voorkomende fout is dat setcookie() aangeroepen wordt, nadat er al eerder content verstuurd is aan de user agent. Dit gebeurd wanneer er tekst of code en zelfs lege spaties staan voordat setcookie aangeroepen wordt. Zelfs het witte spatie karakter (een newline) kan genoeg zijn voor setcookie() om niet te werken.
Hier staat wat tekst. De volgende setcookie() zal fout gaan omdat we nu al informatie naar de browser sturen.
<?
$_COOKIE['count']++;
setcookie('count', $_COOKIE['count']);
?>
Welkom! Je hebt deze website
<? echo $_COOKIE['count']; ?>
keer bekeken!PHP zal automatisch een foutmelding weergeven als setcookie() aangeroepen wordt, nadat er al eerdere data verstuurd is.
!! DE FOUTMELDING !!
Hier staat wat tekst. De volgende setcookie() zal fout gaan omdat we nu al informatie naar de browser sturen.
<B>Warning:</B> Cannot add header information - headers already sent in path/path/filenaam.php on line 5
Indien je de foutmeldingen uit hebt gezet, zal dit probleem erg moeilijk te herkennen zijn.
Pagina 4
Tijdsduur van cookies
Cookies worden standaard ge-set totdat de browser gesloten wordt. Als we dit niet willen laten gebeuren, moeten we een validatie datum en tijd meegeven in een parameter van setcookie().
<?
// eindigd na 3600 seconden (1 uur)
setcookie("naam", $inhoud, time() + 3600);
// eindigd op 01/01/2003
setcookie("naam", $inhoud, mktime(0,0,0,1,1,2003));
// eindigd om 6:30 PM op 05/15/2020
setcookie("naam", $inhoud, mktime(18, 30, 0, 5, 12, 2020));
?>
Wat is je naam? Laten we kijken naar een ander voorbeeld. Deze pagina zorgt voor een pop-up waarin bezoekers hun naam kunnen invoeren welke vervolgens doorgestuurd wordt naar de server.
Als een bezoeker deze pagina aanroept, zal de code kijken of $_POST['bezoekersnaam'] een inhoud bevat of niet. Als dit zo is, zal er een welkom's bericht worden getoond. Indien dit niet zo is, zal een klein formulier getoond worden waarin je de mogelijkheid hebt om je naam in te voeren.
Als een bezoeker haar of zijn naam invoerd, zal de code de cookie 'bezoekersnaam' zetten. Dit checked het script d.m.v. de hidden value. Het zorgt ervoor dat $action als 'setcookie' wordt beschouwd nadat er om de submit button is geklikt. Als de cookie wordt ge-set, zal deze voor 90 dagen worden ge-set (een dag bevat 86400 seconden * 90). Dit is dus ongeveer 3 maanden indien de client cookies accepteerd.
<?
// eindigd na 3600 seconden (1 uur)
setcookie("naam", $inhoud, time() + 3600);
// eindigd op 01/01/2003
setcookie("naam", $inhoud, mktime(0,0,0,1,1,2003));
// eindigd om 6:30 PM op 05/15/2020
setcookie("naam", $inhoud, mktime(18, 30, 0, 5, 12, 2020));
?>
Wat is je naam? Laten we kijken naar een ander voorbeeld. Deze pagina zorgt voor een pop-up waarin bezoekers hun naam kunnen invoeren welke vervolgens doorgestuurd wordt naar de server.
<?
if ($_POST['action'] == "setcookie")
{
setcookie("bezoekersnaam", $bezoekersnaam, time() + 90 * 86400);
// deze cookie zou 90 dagen geldig zijn
}
if (isset($_COOKIE['bezoekersnaam']))
echo "Welkom <b>" . $_COOKIE['bezoekersnaam'] . "</b>!";
else
{
echo "<form method=\"post\" action=\"" . $_SERVER['PHP_SELF'] . "\">";
echo "<input type=\"hidden\" name=\"action\" value=\"setcookie\">";
echo "<p>Welkom, vertel ons a.u.b. uw naam: <input type=\"text\" name=\"bezoekersnaam\" /><br />";
echo "<input type=\"submit\" VALUE=\" ok \" /></p>";
echo "</form>";
}
?>Als een bezoeker deze pagina aanroept, zal de code kijken of $_POST['bezoekersnaam'] een inhoud bevat of niet. Als dit zo is, zal er een welkom's bericht worden getoond. Indien dit niet zo is, zal een klein formulier getoond worden waarin je de mogelijkheid hebt om je naam in te voeren.
Als een bezoeker haar of zijn naam invoerd, zal de code de cookie 'bezoekersnaam' zetten. Dit checked het script d.m.v. de hidden value. Het zorgt ervoor dat $action als 'setcookie' wordt beschouwd nadat er om de submit button is geklikt. Als de cookie wordt ge-set, zal deze voor 90 dagen worden ge-set (een dag bevat 86400 seconden * 90). Dit is dus ongeveer 3 maanden indien de client cookies accepteerd.
Pagina 5
Cookie als variabele
Als er een HTTP aanvraag wordt verstuurd door de user agent met daarin cookie informatie, dan zal PHP het automatisch omzetten in data welke aangeroepen kunnen worden via variabelen. Als voorbeeld, als de user agent een cookie verstuurd met de naam: php, dan zou het script de cookie kunnen aanroepen via de volgende 3 mogelijkheiden:
- $php - de waarde is opgeslagen in een globale variabele met exact de zelfde naam als de cookie
- $HTTP_COOKIE_VARS['php'] - de globale array bevat alleen de variabelen van cookies. Dit helpt het verschil tussen normale variabelen en cookies te onderscheiden.
- $_COOKIE['php'] - de globale array bevat alleen de variabelen van cookies. Dit helpt het verschil tussen normale variabelen en cookies te onderscheiden.
Eén manier die hier wordt beschreven is goed. Dit is de laatste. Sinds PHP versie 4.3 is de setting 'register_globals' standaard op de waarde 'off'. Dit houdt in dat de cookie niet meer aanroepbaar is via de variabele $php.
De global $HTTP_COOKIE_VARS is nog wel te gebruiken (echter niet in alle versies van PHP) maar is niet meer de standaard. Daarnaast is dit ook meer typwerk dan $_COOKIE. Gebruik dus altijd de globale variabele $_COOKIE bij het aanroepen van een cookie.
Onthoud dat cookie namen welke ongeldige karakters bevatten (alleen alphanumeric en underscores zijn geldig) automatisch veranderd worden. Het ongeldige karakter wordt automatisch vervangen met een underscore (_). Dit zou betekenen dat als je de cookie ge-set hebt met de naam on%gel.dig_, deze vervangen zou worden door: 'on_gel_dig_'. De cookie zou je nu dus kunnen aanroepen via $_COOKIE['on_gel_dig_']. Dit brengt echter veel verwarring. Zorg er dus voor dat je de ongeldige karakters altijd mijdt.
De basis manier om een cookie te setten, is door setcookie() te gebruiken. Ik heb al de makkelijkste manier uitgelegd van deze functie. Ik gebruik simpelweg setcookie() met een naam en inhoud. Als voorbeeld, om de inhoud 'inhoud' met de cookienaam 'cookienaam' te setten, gebruiken we:
<?
setcookie("cookienaam", "inhoud");
?>
- $php - de waarde is opgeslagen in een globale variabele met exact de zelfde naam als de cookie
- $HTTP_COOKIE_VARS['php'] - de globale array bevat alleen de variabelen van cookies. Dit helpt het verschil tussen normale variabelen en cookies te onderscheiden.
- $_COOKIE['php'] - de globale array bevat alleen de variabelen van cookies. Dit helpt het verschil tussen normale variabelen en cookies te onderscheiden.
Eén manier die hier wordt beschreven is goed. Dit is de laatste. Sinds PHP versie 4.3 is de setting 'register_globals' standaard op de waarde 'off'. Dit houdt in dat de cookie niet meer aanroepbaar is via de variabele $php.
De global $HTTP_COOKIE_VARS is nog wel te gebruiken (echter niet in alle versies van PHP) maar is niet meer de standaard. Daarnaast is dit ook meer typwerk dan $_COOKIE. Gebruik dus altijd de globale variabele $_COOKIE bij het aanroepen van een cookie.
Onthoud dat cookie namen welke ongeldige karakters bevatten (alleen alphanumeric en underscores zijn geldig) automatisch veranderd worden. Het ongeldige karakter wordt automatisch vervangen met een underscore (_). Dit zou betekenen dat als je de cookie ge-set hebt met de naam on%gel.dig_, deze vervangen zou worden door: 'on_gel_dig_'. De cookie zou je nu dus kunnen aanroepen via $_COOKIE['on_gel_dig_']. Dit brengt echter veel verwarring. Zorg er dus voor dat je de ongeldige karakters altijd mijdt.
De basis manier om een cookie te setten, is door setcookie() te gebruiken. Ik heb al de makkelijkste manier uitgelegd van deze functie. Ik gebruik simpelweg setcookie() met een naam en inhoud. Als voorbeeld, om de inhoud 'inhoud' met de cookienaam 'cookienaam' te setten, gebruiken we:
<?
setcookie("cookienaam", "inhoud");
?>
Pagina 6
Meerdere cookies
Stel je voor dat we zowel de bezoekersnaam als het nummer van bezochte keren willen opslaan. We zouden natuurlijk twee verschillende cookies kunnen gebruiken maar zoals je weet zijn er per server 20 cookies per persoon beschikbaar. Gelukkig kunnen we 'multiple values' in een 'single cookie' opslaan (meerdere waardes in één cookie). Om dit te doen, behandelen we de cookie net als een array en schrijven we een inhoud weg naar elk element in deze cookie als array.
<?
if (!isset($_COOKIE['cookienaam[0]']))
{
setcookie('cookienaam[0]', $_POST['bezoekersnaam']);
}
$_COOKIE['cookienaam[1]']++;
setcookie('cookienaam[1]', $_COOKIE['cookienaam[1]']);
echo "Hallo " . $_COOKIE['cookienaam[0]'] . ", je hebt deze site " . $_COOKIE['cookienaam[1]'] . " keer gezien.";
?>
<?
if (!isset($_COOKIE['cookienaam[0]']))
{
setcookie('cookienaam[0]', $_POST['bezoekersnaam']);
}
$_COOKIE['cookienaam[1]']++;
setcookie('cookienaam[1]', $_COOKIE['cookienaam[1]']);
echo "Hallo " . $_COOKIE['cookienaam[0]'] . ", je hebt deze site " . $_COOKIE['cookienaam[1]'] . " keer gezien.";
?>
Pagina 7
Verloop data uitgebreid
Om een verloop datum met een cookie mee te geven, gebruiken we mk_time() (timestamp formaat) en time(). Onhoud wel dat de verloopdata gecalculeerd wordt op de client zijn machine.
<?
// absolute data
// paramter: uur, minuut, seconde, maand, dag, jaar
$verloopdata = mktime(0, 0, 0, 1, 1, 2003); /* verloopt om 12 uur 's nachts op 1
januari 2003 (0:0:0 1.1.2003)*/
$verloopdata = mktime(12, 50, 30, 6, 20, 2010); /* verloopt om 10 voor 1 's middags
op 20 juni 2010 (12:50:30 20.6.2010)*/
// relative data
$verloopdata = time() + 3600; // verloopt na 1 uur
$verloopdata = time() + 86400; // verloopt na 1 dag
$verloopdata = time() + 86400 * 30; // verloopt na 30 dagen (ongv. 1 maand dus)
?>
Nadat we de verloop data berekend hebben, kunnen we deze doorgeven in setcookie() als een derde parameter.
<?
setcookie('cookienaam', 'inhoud', $verloopdata);
?>
De browser herkend deze en de cookie zal automatisch verwijderd worden nadat deze tijd verlopen is.
<?
// absolute data
// paramter: uur, minuut, seconde, maand, dag, jaar
$verloopdata = mktime(0, 0, 0, 1, 1, 2003); /* verloopt om 12 uur 's nachts op 1
januari 2003 (0:0:0 1.1.2003)*/
$verloopdata = mktime(12, 50, 30, 6, 20, 2010); /* verloopt om 10 voor 1 's middags
op 20 juni 2010 (12:50:30 20.6.2010)*/
// relative data
$verloopdata = time() + 3600; // verloopt na 1 uur
$verloopdata = time() + 86400; // verloopt na 1 dag
$verloopdata = time() + 86400 * 30; // verloopt na 30 dagen (ongv. 1 maand dus)
?>
Nadat we de verloop data berekend hebben, kunnen we deze doorgeven in setcookie() als een derde parameter.
<?
setcookie('cookienaam', 'inhoud', $verloopdata);
?>
De browser herkend deze en de cookie zal automatisch verwijderd worden nadat deze tijd verlopen is.
Pagina 8
Specifieke pagina's defineren
Nog een handige optie is, om specifieke pagina's van een webserver te specificeren. Stel je voor dat elke klant op een website een eigen directory heeft. Bijvoorbeeld /klant1, /klant2, /klant3 en ga zo maar door. Indien 1 enkele cookie naam verzonden wordt voor hetzelfde gebruik, zou klant 1 in /klant1 kunnen komen, maar ook in /klant2 en /klant3.
Daarom kunnen we dit beperken tot 1 directory. Om een directory te specificeren, moeten we de trailing slash (/) gebruiken. Dit gaat als volgt:
<?
setcookie('cookienaam', 'inhoud', $verloopdata, '/klant1/');
?>
Dit zorgt er voor dat de cookie alleen wordt ge-set voor de directory /klant1. Indien je ook nog een domain naam wilt meegeven (indien je meerdere subdomains gebruikt, zoals www1.domain.nl, www2.domain.nl etc.) kun je dit als volgt doen:
<?
// dit zorgt ervoor dat de cookie verstuurd wordt naar alle subdomains van 'domain.nl'
setcookie('cookienaam', 'inhoud', $verloopdata, '/klant1/', '*.domein.nl');
// dit zorgt ervoor dat de cookie alleen gebruikt mag worden voor de www1 sub domain
setcookie('cookienaam', 'inhoud', $verloopdata, '/klant1/', 'www1.domein.nl');
?>
Daarom kunnen we dit beperken tot 1 directory. Om een directory te specificeren, moeten we de trailing slash (/) gebruiken. Dit gaat als volgt:
<?
setcookie('cookienaam', 'inhoud', $verloopdata, '/klant1/');
?>
Dit zorgt er voor dat de cookie alleen wordt ge-set voor de directory /klant1. Indien je ook nog een domain naam wilt meegeven (indien je meerdere subdomains gebruikt, zoals www1.domain.nl, www2.domain.nl etc.) kun je dit als volgt doen:
<?
// dit zorgt ervoor dat de cookie verstuurd wordt naar alle subdomains van 'domain.nl'
setcookie('cookienaam', 'inhoud', $verloopdata, '/klant1/', '*.domein.nl');
// dit zorgt ervoor dat de cookie alleen gebruikt mag worden voor de www1 sub domain
setcookie('cookienaam', 'inhoud', $verloopdata, '/klant1/', 'www1.domein.nl');
?>
Pagina 9
Cookies voor HTTPS
Stel je nou voor dat we vertrouwlijke informatie in de cookie opslaan en we deze willen beschermen tegen andere ogen. Gebruikmakende van een beveiligde HTTP (HTTPS) connectie zal deze data ge-encrypt worden en zo dus moeilijker worden om op te vragen. Om het risico te ontlopen om de plain tekst (niet encrypted) te versturen, kan een zesde paramter meegegeven worden. Als deze parameter ge-set is met 1, dan zal de useragent de cookie niet versturen, tenzij het een beveilgde connectie is.
<?
// de cookie zal alleen worden verstuurd naar een beveilgde connectie
setcookie('cookienaam', 'inhoud', $verloopdata, '/klant1/', 'www1.domain.nl', 1);
?>
De volledige syntax van setcookie() is dus:
<?
int setcookie(string cookienaam, string [inhoud], integer [verloopdata],
string [path], string [domain], integer [beveiliging]);
?>
<?
// de cookie zal alleen worden verstuurd naar een beveilgde connectie
setcookie('cookienaam', 'inhoud', $verloopdata, '/klant1/', 'www1.domain.nl', 1);
?>
De volledige syntax van setcookie() is dus:
<?
int setcookie(string cookienaam, string [inhoud], integer [verloopdata],
string [path], string [domain], integer [beveiliging]);
?>
Pagina 10
Cookie verwijderen
Indien je een cookie wilt verwijderen, kun je de setcookie() aanroepen en de naam van de cookie die je wilt verwijderen aanroepen. Het verschil tussen een cookie setten, en een cookie verwijderen is dat je met het verwijderen geen inhoud mee geeft. Het gaat dus als volgt:
<?
setcookie("cookienaam");
?>
Dit is het einde van de tutorial. Wat heb je hier nou van geleerd?
Ik wens je veel succes met het gebruikmaken van cookies. Mocht je vragen hebben over cookies, stel deze dan op het forum of laat een reactie achter op deze tutorial.
<?
setcookie("cookienaam");
?>
Dit is het einde van de tutorial. Wat heb je hier nou van geleerd?
- [li]Je weet hoe je een cookie moet setten[/li][li]Je weet hoe je een cookie een bepaalde levensduur meegeeft[/li][li]Je weet hoe je een cookie voor alleen een subdomein kunt setten[/li][li]Je weet hoe je een cookie kunt gebruiken voor een HTTPS verbinding[/li][li]Je weet hoe je een cookie moet uitlezen[/li][li]Je weet hoe je meerdere waardes in één cookie kunt setten[/li][li]Je weet hoe je een cookie verwijderd[/li]
Ik wens je veel succes met het gebruikmaken van cookies. Mocht je vragen hebben over cookies, stel deze dan op het forum of laat een reactie achter op deze tutorial.
Reacties
0