|
|
HTTP
header
headers_sent
setcookie
|
Envoie un cookie
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 :
@itemize @bullet
Les cookies ne seront accessibles qu'au chargement de la prochaine page,
ou au rechargement de la page courante.
Les cookies doivent être effacés avec les mêmes paramètres
que ceux utilisés lors de leur création.
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 :
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.
|
|
|
|