setcookie

setcookie -- Envoie un cookie

Description

int setcookie ( string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])

setcookie( ) définit un cookie qui sera envoyé avec le reste des en-têtes . Les cookies doivent passer avant toute autre en-tête ( c'est une restriction des cookies , pas de PHP ) . Cela vous impose d ' appeler cette fonction avant toute balise HTML ou HEAD .

Tous les arguments sauf name ( nom ) sont optionnels . Si seul le nom est présent , le cookie portant ce nom sera supprimé du navigateur de l ' internaute . Vous pouvez aussi utiliser une chaîne vide comme valeur , pour ignorer un argument . Le paramètre expire est un timestamp UNIX , du même genre que celui retourné par time( ) ou mktime( ) . Le paramètre secure indique que le cookie doit être uniquement transmis à travers une connexion HTTPS sécurisée .

Erreurs communes :



En PHP 3 , les appels multiples à setcookie( ) dans le même script seront effectués dans l 'ordre inverse . Si vous essayez d' effacer un cookie avant d'insérer une nouvelle valeur , vous devez placer l'insertion avant l 'effacement . En PHP 4 , les appels multiples à setcookie( ) sont effectués dan un ordre naturel .

Les appels multiples à setcookie( ) dans la même page seront réalisés dans l 'ordre inverse . Si vous essayez d' effacer un cookie avant d'insérer une autre valeur , il faut placer l'insertion avant l 'effacement .

Quelques exemples :

Exemple 1 . Exemples avec setcookie( )

 
?php

 
setcookie(

 
"TestCookie"

 
,"Valeur

 
de

 
test")

 
;

 
setcookie("TestCookie",$value,time()+3600)

 
;

 
/

 
*

 
expire

 
dans

 
une

 
heure

 
*

 
/

 
setcookie("TestCookie",$value,time()+3600

 
,"

 
/

 
~rasmus

 
/

 
"

 
,".utoronto.ca",1)

 
;

 
?





Notez que la partie " valeur " du cookie sera automatiquement encodée URL lorsque vous envoyez le cookie , et lorsque vous le recevez , il sera automatiquement décodé , et affecté à la variable du même nom que le cookie . Pour voir le résultat , essayez les scripts suivants :

 
?php

 
echo

 
$TestCookie

 
;

 
echo

 
$HTTP_COOKIE_VARS["TestCookie"]

 
;

 
?





Vous pouvez aussi utiliser les cookies avec des tableaux , en utilisant la notation des tableaux . Cela a pour effet de créer autant de cookies que votre tableau a d ' éléments , mais lorsque les cookies seront reçus par PHP , les valeurs seront placées dans un tableau :

 
?php

 
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"

 
;

 
    }

 
  }

 
?





Pour d ' autres informations sur les cookies , jetez un oeil sur http : / /www.netscape.com / newsref / std / cookie_spec.html .

Microsoft Internet Explorer 4 utilisé avec le Service Pack 1 ne gère pas bien les cookies qui possèdent un paramètre path .

Netscape Communicator 4.05 et Microsoft Internet Explorer 3.x semblent ne pas gérer correctement les cookies lorsque path et time ne sont pas fournis .