Manuel PHP
Précédent |  | Suivant

# setcookie

(PHP 3, PHP 4 )

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 :

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

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.

Précédent | Sommaire | Suivant
headers_sent | Niveau supérieur | Hyperwave