Hoi ik had een vraag.
Ik ben bezig met een school opdracht waar ik een array in een cookie opslaan moet.
Nu is mijn vraag hoe dit moet.
Ik heb een manier gevonden maar niet echt duidelijk is:

<?php
// set the cookies
setcookie("cookie[three]", "cookiethree");
setcookie("cookie[two]", "cookietwo");
setcookie("cookie[one]", "cookieone");

// after the page reloads, print them out
if (isset($_COOKIE['cookie'])) {
foreach ($_COOKIE['cookie'] as $name => $value) {
echo "$name : $value <br />\
";
}
}
?>

Wat ik zo raar vind is dat de array niet verklaart wordt.
Mij lijkt het dat er eerst een array aangemaakt moet worden, bijvoorbeeld:

$words = array("regen", "wind", "hagel");

en dan de array toevoegen aan de cookie, maar hoe?

alvast bedankt,

rudie
Cookies zijn niks anders dan tekstbestanden op de bezoeker op de computer. Ze bestaan enkel maar uit tekst.

Array's zijn niks anders dan datacontainers die binnen PHP gelden, en die een boomstructuur kunnen bevatten.

Als je de data in je Cookie wilt opslaan, dan moet je dit als Text opslaan. Bijvoorbeeld met een scheidingsteken tussen de waardes, of door het in JSON formaat op te slaan. Kijk eens naar json_encode() en json_decode() op PHP.net.

Of de data per cookie opslaan. Maar probeer niet boven de 20 cookies per host te komen. Ik weet niet of de browsers dat nog slikken. ;-)
In tegenstelling tot wat Ariën hierboven mogelijk suggereert wordt een elementaire array-notatie ondersteund. Zie Example #3 op php.net. Topicstarter heeft dit voorbeeld hierboven letterlijk gecopypaste.

Dat gezegd hebbende is een cookie mogelijk niet de beste plek om je datastructuren in te kieperen. Hiervoor is mogelijk een sessie geschikter. Een alternatief is (inderdaad) een JSON-string, of een geserialiseerd array, maar de vraag is, wil je deze informatie blootstellen aan (en mogelijk manipuleerbaar maken door) een eindgebruiker? Cookies worden immers aan de gebruikerskant opgeslagen.

Indien je cookies vanuit PHP wilt declareren zul je deze op de manier moeten opbouwen die voor een array-notatie zorgt. De $value-parameter verwacht immers een string (en geen array of wat dan ook). Je zult dus een cookie-met-array-notatie moeten opbouwen in een for(each)-loop.

Reageren