setcookie

setcookie -- Verstuur een cookie

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 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 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 :



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 :

 
echo

 
$TestCookie

 
;

 
echo

 
$_COOKIE["TestCookie"]

 
;





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 :

 
setcookie

 
(

 
"cookie[three]"

 
,

 
"cookiethree")

 
;

 
setcookie

 
("cookie[two]"

 
,

 
"cookietwo")

 
;

 
setcookie

 
("cookie[one]"

 
,

 
"cookieone")

 
;

 
if

 
(isset

 
($cookie)

 
)

 
{

 
while

 
(list

 
($name

 
,

 
$value

 
)

 
=

 
each

 
($cookie)

 
)

 
{

 
echo

 
"$name

 
==

 
$value

 
br

 
\n"

 
;

 
    }

 
}





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 .