Beschrijving
boolean
setcookie ( string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])
setcookie() defineert een cookie dat wordt meegezonden
met de rest van de header informatie. Zoals elke header moeten cookies
verzonden worden voordat er output verzonden wordt
vanuit je script (dit is een restrictie van het protocol). Daarom moet je
deze functie aanroepen voor enige output, zoals
<html> of <head> tags en
whitespace. Als er toch output wordt doorgegeven voor het aanroepen
van deze functie, dan zal setcookie() falen en
FALSE terug geven. Als alles goed is gegaan, geeft hij TRUE terug. Dit
wil echter niet zeggen dat de gebruiker het cookie geaccepteerd heeft.
Alle argumenten behalve de name parameter zijn
optioneel. Als alleen het name argument aanwezig is, wordt het cookie met
die naam verwijderd van de remote client. Je mag een willekeurig argument
ook vervangen door een lege string ("") om
dat argument over te slaan. De expire en
secure argumenten zijn integers en kunnen niet
worden overgeslagen met een lege string. Gebruik in plaats daarvan een
nul (0). De expire parameter
is een normaal Unix tijds integer zoals wordt teruggegeven door de
time() of mktime() functies. De
secure geeft aan dat het cookie alleen mag worden
verzonden over een veilige HTTPS verbinding.
Wanneer cookies eenmaal zijn ingesteld, kunnen ze worden opgeroepen
op de volgende pagina met de $_COOKIE
of $HTTP_COOKIE_VARS array. Let op dat
autoglobals
zoals $_COOKIE vanaf PHP 4.1.0
pas aanwezig zijn.
$HTTP_COOKIE_VARS bestaat al vanaf PHP 3.
Veel voorkomende fouten:
Cookies worden niet zichtbaar tot de volgende keer dat een pagina
waarop het cookie zichtbaar is wordt geladen. Om te testen
of een cookie succesvol is meegegeven, controleer dan voor cookies
bij het laden van de pagina voor de cookie verloopt. De verlooptijd
kan je instellen met de expire parameter.
Cookies moeten worden verwijderd met dezelfde parameters als waarmee
ze werden ingesteld.
Cookie namen kunnen aangegeven zijn als array namen en zullen dan
aanwezig zijn in je PHP scripts als array, maar worden bij de gebruiker
als aparte cookies opgeslagen. Overweeg explode() of
serialize() om ? cookie te gebruiken die meerdere
namen en waardes bevat.
In PHP 3 worden meerdere aanroepen van setcookie() in
hetzelfde script verwerkt in omgekeerde volgorde. Als je probeert een
cookie te verwijderen voordat je een nieuwe neerzet, moet je het
toevoegen doen voor het verwijderen. In PHP 4 worden meerdere aanroepen
van setcookie() verwerkt in de volgorde waarop ze
worden aangeroepen.
Een paar voorbeelden volgen over hoe je cookies moet verzenden:
Voorbeeld 1. setcookie() stuur voorbeelden
setcookie ("TestCookie", $value); setcookie ("TestCookie", $value,time()+3600); /* verloopt in 1 uur */ setcookie ("TestCookie", $value,time()+3600, "/~rasmus/", ".utoronto.ca", 1);
|
|
Wanneer je een cookie verwijdert moet je zorgen dat de expiratie datum in
het verleden is, om het verwijder mechanisme in je browser te activeren.
Er volgen voorbeelden hoe je in het vorige voorbeeld verzonden cookies
kunt verwijderen:
Voorbeeld 2. setcookie() verwijder voorbeelden
// zet de verlooptijd naar 1 uur in het verleden setcookie ("TestCookie", "", time() - 3600); setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", ".utoronto.ca", 1);
|
|
Let er op dat het waarde deel van het cookie automatisch wordt
ge-urlencoded wanneer je het cookie verzendt, en wanneer het wordt
ontvangen, wordt het automatisch gedecodeerd en toegewezen aan een
variabele met dezelfde naam als de cookie naam. Om de inhoud van ons test
cookie in een script te zien, kun je simpelweg een van de volgende
voorbeelden gebruiken:
Je kunt ook array cookies zetten door array notatie in de cookie naam te
gebruiken. Dit heeft het effect dat er evenveel cookies worden neergezet
als je array elements hebt, maar als het cookie wordt ontvangen door je
script worden de waarden allemaal geplaatst in een array met de naam van
het cookie:
Voor meer informatie over cookies, zie Netscape's cookie
specificatie op http://www.netscape.com/newsref/std/cookie_spec.html.
Microsoft Internet Explorer 4 met Service Pack 1 werkt niet goed met
cookies die hun path parameter hebben ingesteld.
Netscape Communicator 4.05 en Microsoft Internet Explorer 3.x lijken
cookies incorrect af te handelen wanneer het pad en de tijd niet zijn
ingesteld.