<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.network.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'function.setcookie.php',
    1 => 'setcookie',
    2 => 'Envoie un cookie',
  ),
  'up' => 
  array (
    0 => 'ref.network.php',
    1 => 'Fonctions r&eacute;seaux',
  ),
  'prev' => 
  array (
    0 => 'function.request-parse-body.php',
    1 => 'request_parse_body',
  ),
  'next' => 
  array (
    0 => 'function.setrawcookie.php',
    1 => 'setrawcookie',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/network/functions/setcookie.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.setcookie" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">setcookie</h1>
  <p class="verinfo">(PHP 4, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">setcookie</span> &mdash; <span class="dc-title">Envoie un cookie</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.setcookie-description">
  <h3 class="title">Description</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>setcookie</strong></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$name</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$value</code><span class="initializer"> = &quot;&quot;</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$expires_or_options</code><span class="initializer"> = 0</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$path</code><span class="initializer"> = &quot;&quot;</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$domain</code><span class="initializer"> = &quot;&quot;</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span> <code class="parameter">$secure</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong></span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span> <code class="parameter">$httponly</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong></span></span><br>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>

  <p class="simpara">Signature alternative disponible à partir de PHP 7.3.0 (pas supporté avec les paramètres nommés) :</p>
  <div class="methodsynopsis dc-description"><span class="methodname"><strong>setcookie</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$name</code></span>, <span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$value</code><span class="initializer"> = &quot;&quot;</span></span>, <span class="methodparam"><span class="type"><a href="language.types.array.php" class="type array">array</a></span> <code class="parameter">$options</code><span class="initializer"> = []</span></span>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>

  <p class="simpara">
   <span class="function"><strong>setcookie()</strong></span> définit un cookie qui sera envoyé
   avec le reste des en-têtes HTTP. Comme pour les autres en-têtes, les cookies
   doivent être envoyés <em>avant</em> toute autre sortie du script
   (c&#039;est une restriction du protocole HTTP, pas de PHP). Cela impose
   d&#039;appeler cette fonction avant toute balise <code class="literal">&lt;html&gt;</code>
   ou <code class="literal">&lt;head&gt;</code> et aussi des caractères d&#039;espacement blanc.
  </p>
  <p class="simpara">
   Une fois que les cookies ont été placés, ils seront accessibles lors du prochain
   chargement de page dans le tableau <var class="varname"><a href="reserved.variables.cookies.php" class="classname">$_COOKIE</a></var>.
   Les valeurs des cookies
   peuvent aussi exister dans la variable <var class="varname"><a href="reserved.variables.request.php" class="classname">$_REQUEST</a></var>.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.setcookie-parameters">
  <h3 class="title">Liste de paramètres</h3>
  <p class="para">
   La <a href="https://datatracker.ietf.org/doc/html/rfc6265" class="link external">&raquo;&nbsp;RFC 6265</a> est la référence pour
   l&#039;interprétation des paramètres passés à <span class="function"><strong>setcookie()</strong></span>.
   <dl>
    
     <dt><code class="parameter">name</code></dt>
     <dd>
      <span class="simpara">
       Le nom du cookie.
      </span>
     </dd>
    
    
     <dt><code class="parameter">value</code></dt>
     <dd>
      <span class="simpara">
       La valeur du cookie. Cette valeur est stockée sur l&#039;ordinateur du client ;
       ne stockez pas d&#039;informations sensibles. Si le paramètre
       <code class="parameter">name</code> vaut <code class="literal">&#039;cookiename&#039;</code>,
       cette valeur est récupérée avec <var class="varname"><a href="reserved.variables.cookies.php" class="classname">$_COOKIE['cookiename']</a></var>
      </span>
     </dd>
    
    
     <dt><code class="parameter">expires_or_options</code></dt>
     <dd>
      <span class="simpara">
       Le temps après lequel le cookie expire. C&#039;est un horodatage Unix, donc
       un nombre de secondes depuis l&#039;époque Unix (1 janvier 1970).
       Une façon de définir cette valeur est d&#039;ajouter le nombre de secondes avant
       que le cookie n&#039;expire au résultat d&#039;un appel à <span class="function"><a href="function.time.php" class="function">time()</a></span>.
       Par exemple <code class="literal">time()+60*60*24*30</code> configurera le cookie pour
       qu&#039;il expire dans 30 jours. Une autre possibilité consiste à utiliser la
       fonction <span class="function"><a href="function.mktime.php" class="function">mktime()</a></span>. Si ce paramètre vaut <code class="literal">0</code>,
       ou s&#039;il est omis, le cookie expirera à la fin de la session
       (lorsque le navigateur sera fermé).
      </span>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <span class="simpara">
        Le paramètre <code class="parameter">expires_or_options</code> prend un
        horodatage Unix, et non pas la date au format <code class="literal">Jour, JJ-Mois-AAAA
        HH:MM:SS GMT</code>, car PHP fait la conversion en interne.
       </span>
      </p></blockquote>
     </dd>
    
    
     <dt><code class="parameter">path</code></dt>
     <dd>
      <span class="simpara">
       Le chemin sur le serveur sur lequel le cookie sera disponible.
       Si la valeur est <code class="literal">&#039;/&#039;</code>, le cookie sera disponible
       sur l&#039;ensemble du domaine <code class="parameter">domain</code>. Si la valeur
       est <code class="literal">&#039;/foo/&#039;</code>, le cookie sera uniquement disponible
       dans le répertoire <code class="literal">/foo/</code> ainsi que tous ses
       sous-répertoires comme <code class="literal">/foo/bar/</code> dans le domaine
       <code class="parameter">domain</code>. La valeur par défaut est le répertoire
       courant où le cookie a été défini.
      </span>
     </dd>
    
    
     <dt><code class="parameter">domain</code></dt>
     <dd>
      <span class="simpara">
       Le (sous-)domaine pour lequel le cookie est disponible. Définir ceci à un
       sous-domaine (tel que <code class="literal">&#039;www.example.com&#039;</code>) rendra le cookie
       disponible pour ce sous-domaine ainsi que tous ses sous-domaines
       (par exemple : w2.www.example.com). Pour rendre le cookie
       disponible sur tout le domaine (ainsi que tous ses sous-domaines), définissez
       simplement la valeur avec le nom de domaine (<code class="literal">&#039;example.com&#039;</code>,
       avec cet exemple).
      </span>
      <span class="simpara">
       Les anciens navigateurs continuant d&#039;implémenter la
       <a href="https://datatracker.ietf.org/doc/html/rfc2109" class="link external">&raquo;&nbsp;RFC 2109</a> (obsolète)
       peuvent nécessiter un <code class="literal">.</code> pour rendre disponible
       tous les sous-domaines.
      </span>
     </dd>
    
    
     <dt><code class="parameter">secure</code></dt>
     <dd>
      <span class="simpara">
       Indique si le cookie doit uniquement être transmis à travers une
       connexion sécurisée HTTPS depuis le client. Lorsque ce paramètre
       vaut <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>, le cookie ne sera envoyé que si la connexion est sécurisée.
       Côté serveur, c&#039;est au développeur d&#039;envoyer ce genre de cookie
       uniquement sur les connexions sécurisées (par exemple, en utilisant
       la variable <var class="varname"><a href="reserved.variables.server.php" class="classname">$_SERVER["HTTPS"]</a></var>).
      </span>
     </dd>
    
    
     <dt><code class="parameter">httponly</code></dt>
     <dd>
      <span class="simpara">
       Lorsque ce paramètre vaut <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>, le cookie ne sera accessible que par
       le protocole HTTP. Cela signifie que le cookie ne sera pas accessible
       via des langages de scripts, comme Javascript. Il a été suggéré que cette
       configuration permet de limiter les attaques via XSS (bien qu&#039;elle ne soit
       pas supportée par tous les navigateurs), néanmoins ce fait est souvent contesté.
       <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> ou <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>
      </span>
     </dd>
    
    
     <dt><code class="parameter">options</code></dt>
     <dd>
      <span class="simpara">
       Un <a href="language.types.array.php" class="link">tableau</a> associatif qui peut avoir comme clés
       <code class="literal">expires</code>, <code class="literal">path</code>, <code class="literal">domain</code>,
       <code class="literal">secure</code>, <code class="literal">httponly</code> et <code class="literal">samesite</code>.
       Les valeurs ont la même signification que celles décrites pour les paramètres
       avec le même nom. La valeur de l&#039;élément <code class="literal">samesite</code> doit
       être <code class="literal">None</code>, <code class="literal">Lax</code> ou <code class="literal">Strict</code>.
       Si une option autorisée n&#039;est pas donnée, alors sa valeur par défaut sera
       identique à la valeur par défaut des paramètres explicites. Si l&#039;élément
       <code class="literal">samesite</code> est omis, alors l&#039;attribut SameSite du cookie
       ne sera pas défini.
      </span>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <span class="simpara">
        Pour définir un cookie qui inclut des attributs qui ne figurent pas parmi les clés répertoriées,
        utiliser <span class="function"><a href="function.header.php" class="function">header()</a></span>.
       </span>
      </p></blockquote>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <span class="simpara">
        Si <code class="literal">samesite</code> vaut <code class="literal">&quot;None&quot;</code>, alors
        <code class="literal">secure</code> doit également être activé, sinon le cookie sera
        bloqué par le client.
       </span>
      </p></blockquote>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.setcookie-returnvalues">
  <h3 class="title">Valeurs de retour</h3>
  <p class="simpara">
   Si quelque chose a été envoyé sur la sortie standard avant l&#039;appel
   à cette fonction, <span class="function"><strong>setcookie()</strong></span> échouera et
   retournera <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>. Si <span class="function"><strong>setcookie()</strong></span> réussit,
   elle retournera <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>.
   Cela n&#039;indique pas si le client accepte ou non le cookie.
  </p>
 </div>


 <div class="refsect1 errors" id="refsect1-function.setcookie-errors">
  <h3 class="title">Erreurs / Exceptions</h3>
  <p class="para">
   Si le tableau <code class="parameter">options</code> contient une clé non supportée,
   une <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> est lancée.
  </p>
  <p class="para">
   Antérieur à PHP 8.0.0, si le tableau <code class="parameter">options</code> contenait
   une clé non supportée, une erreur de niveau <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong>
   était émise.
  </p>
 </div>


 <div class="refsect1 changelog" id="refsect1-function.setcookie-changelog">
  <h3 class="title">Historique</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Version</th>
      <th>Description</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>8.2.0</td>
      <td>
       La date du cookie est au format <code class="literal">&#039;D, d M Y H:i:s \G\M\T&#039;</code> ;
       précédemment c&#039;était <code class="literal">&#039;D, d-M-Y H:i:s T&#039;</code>.
      </td>
     </tr>

     <tr>
      <td>8.0.0</td>
      <td>
       Si le tableau <code class="parameter">options</code> contient une clé non supportée,
       une <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> est désormais lancée ;
       précédemment, ces clés étaient ignorées avec une erreur
       de niveau <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong>.
      </td>
     </tr>

     <tr>
      <td>7.3.0</td>
      <td>
       Une signature alternative supportant un tableau
       d&#039;<code class="parameter">options</code> a été ajoutée. Cette signature supporte
       également la définition de l&#039;attribut SameSite du cookie.
      </td>
     </tr>

    </tbody>
   
  </table>

 </div>


 <div class="refsect1 examples" id="refsect1-function.setcookie-examples">
  <h3 class="title">Exemples</h3>
  <p class="simpara">
   Les effets des exemples suivants peuvent être observés en utilisant la liste
   des cookies des outils de développement du navigateur (généralement dans
   l&#039;onglet Stockage ou Application).
  </p>
  <div class="example" id="example-1">
   <p><strong>Exemple #1 Exemple d&#039;envoi d&#039;un cookie avec <span class="function"><strong>setcookie()</strong></span></strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />$value </span><span style="color: #007700">= </span><span style="color: #DD0000">'something from somewhere'</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// Définit un "cookie de session" qui expire lorsque le navigateur est fermé<br /></span><span style="color: #0000BB">setcookie</span><span style="color: #007700">(</span><span style="color: #DD0000">"TestCookie"</span><span style="color: #007700">, </span><span style="color: #0000BB">$value</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">// Définit un cookie qui expire dans 1 heure<br /></span><span style="color: #0000BB">setcookie</span><span style="color: #007700">(</span><span style="color: #DD0000">"TestCookie"</span><span style="color: #007700">, </span><span style="color: #0000BB">$value</span><span style="color: #007700">, </span><span style="color: #0000BB">time</span><span style="color: #007700">()+</span><span style="color: #0000BB">3600</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">// Définit un cookie qui s'applique uniquement à un chemin spécifique sur un domaine spécifique<br />// Notez que le domaine utilisé devrait correspondre au domaine du site<br /></span><span style="color: #0000BB">setcookie</span><span style="color: #007700">(</span><span style="color: #DD0000">"TestCookie"</span><span style="color: #007700">, </span><span style="color: #0000BB">$value</span><span style="color: #007700">, </span><span style="color: #0000BB">time</span><span style="color: #007700">()+</span><span style="color: #0000BB">3600</span><span style="color: #007700">, </span><span style="color: #DD0000">"/~rasmus/"</span><span style="color: #007700">, </span><span style="color: #DD0000">"example.com"</span><span style="color: #007700">, </span><span style="color: #0000BB">true</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
  <p class="simpara">
   À noter que la partie &quot;valeur&quot; du cookie sera automatiquement
   encodée URL par PHP. Cela peut être évité en utilisant la fonction
   <span class="function"><a href="function.setrawcookie.php" class="function">setrawcookie()</a></span> à la place.
  </p>
  <p class="simpara">
   Pour voir le contenu des cookies définis dans l&#039;exemple ci-dessus lors d&#039;une
   requête ultérieure :
  </p>
  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// Afficher un cookie<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">$_COOKIE</span><span style="color: #007700">[</span><span style="color: #DD0000">"TestCookie"</span><span style="color: #007700">];<br /><br /></span><span style="color: #FF8000">// Une autre façon de déboguer/tester est d'afficher tous les cookies<br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$_COOKIE</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
  <div class="example" id="example-2">
   <p><strong>Exemple #2 Exemple d&#039;effacement d&#039;un cookie avec <span class="function"><strong>setcookie()</strong></span></strong></p>
   <div class="example-contents"><p>
    Pour supprimer un cookie, définissez sa date d&#039;expiration à une valeur
    dans le passé (mais pas zéro, qui est réservé aux cookies de session).
   </p></div>
   <div class="example-contents"><p>
    Pour supprimer les cookies définis dans l&#039;exemple précédent :
   </p></div>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// Définit la date d'expiration à une heure dans le passé<br /></span><span style="color: #0000BB">setcookie</span><span style="color: #007700">(</span><span style="color: #DD0000">"TestCookie"</span><span style="color: #007700">, </span><span style="color: #DD0000">""</span><span style="color: #007700">, </span><span style="color: #0000BB">time</span><span style="color: #007700">() - </span><span style="color: #0000BB">3600</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">setcookie</span><span style="color: #007700">(</span><span style="color: #DD0000">"TestCookie"</span><span style="color: #007700">, </span><span style="color: #DD0000">""</span><span style="color: #007700">, </span><span style="color: #0000BB">time</span><span style="color: #007700">() - </span><span style="color: #0000BB">3600</span><span style="color: #007700">, </span><span style="color: #DD0000">"/~rasmus/"</span><span style="color: #007700">, </span><span style="color: #DD0000">"example.com"</span><span style="color: #007700">, </span><span style="color: #0000BB">1</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
  <div class="example" id="example-3">
   <p><strong>Exemple #3 <span class="function"><strong>setcookie()</strong></span> et les tableaux</strong></p>
   <div class="example-contents"><p>
    Un &quot;tableau de cookies&quot; peut être défini en utilisant la notation tableau
    dans le nom du cookie. Cela a pour effet de créer autant de cookies qu&#039;il
    y a d&#039;éléments dans le tableau, mais lorsque le cookie est reçu par le
    script, les valeurs sont toutes placées dans un tableau avec le nom du
    cookie :
   </p></div>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// Définit les cookies<br /></span><span style="color: #0000BB">setcookie</span><span style="color: #007700">(</span><span style="color: #DD0000">"cookie[three]"</span><span style="color: #007700">, </span><span style="color: #DD0000">"cookiethree"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">setcookie</span><span style="color: #007700">(</span><span style="color: #DD0000">"cookie[two]"</span><span style="color: #007700">, </span><span style="color: #DD0000">"cookietwo"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">setcookie</span><span style="color: #007700">(</span><span style="color: #DD0000">"cookie[one]"</span><span style="color: #007700">, </span><span style="color: #DD0000">"cookieone"</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Après le rechargement de la page, nous les affichons<br /></span><span style="color: #007700">if (isset(</span><span style="color: #0000BB">$_COOKIE</span><span style="color: #007700">[</span><span style="color: #DD0000">'cookie'</span><span style="color: #007700">])) {<br />    foreach (</span><span style="color: #0000BB">$_COOKIE</span><span style="color: #007700">[</span><span style="color: #DD0000">'cookie'</span><span style="color: #007700">] as </span><span style="color: #0000BB">$name </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">$value</span><span style="color: #007700">) {<br />        </span><span style="color: #0000BB">$name </span><span style="color: #007700">= </span><span style="color: #0000BB">htmlspecialchars</span><span style="color: #007700">(</span><span style="color: #0000BB">$name</span><span style="color: #007700">);<br />        </span><span style="color: #0000BB">$value </span><span style="color: #007700">= </span><span style="color: #0000BB">htmlspecialchars</span><span style="color: #007700">(</span><span style="color: #0000BB">$value</span><span style="color: #007700">);<br />        echo </span><span style="color: #DD0000">"</span><span style="color: #0000BB">$name</span><span style="color: #DD0000"> : </span><span style="color: #0000BB">$value</span><span style="color: #DD0000"> &lt;br /&gt;\n"</span><span style="color: #007700">;<br />    }<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   <div class="example-contents"><p>L&#039;exemple ci-dessus va afficher :</p></div>
   <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">three : cookiethree
two : cookietwo
one : cookieone</pre>
</div>
   </div>
  </div>
  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <span class="simpara">
    L&#039;utilisation des caractères de séparation comme <code class="literal">[</code> et
    <code class="literal">]</code> comme faisant partie du nom du cookie n&#039;est pas
    conforme à la RFC 6265, section 4, mais est supposée être supportée
    par les user agents, suivant la RFC 6265, section 5.
   </span>
  </p></blockquote>
 </div>


 <div class="refsect1 notes" id="refsect1-function.setcookie-notes">
  <h3 class="title">Notes</h3>
  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <span class="simpara">
    La mise en tampon de sortie peut être utilisée pour permettre la sortie du
    script avant l&#039;appel à cette fonction. Toute sortie sera mise en tampon
    jusqu&#039;à ce qu&#039;elle soit vidée (soit explicitement, soit à la fin de
    l&#039;exécution du script). Cela se fait en appelant <span class="function"><a href="function.ob-start.php" class="function">ob_start()</a></span>
    et <span class="function"><a href="function.ob-end-flush.php" class="function">ob_end_flush()</a></span> dans le script, ou en activant la
    directive de configuration <code class="literal">output_buffering</code> dans le
    fichier <var class="filename">php.ini</var> ou dans les fichiers de configuration du serveur.
   </span>
  </p></blockquote>
  <p class="para">
   Erreurs courantes :
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      Les cookies ne seront accessibles qu&#039;au chargement de la prochaine page,
      ou au rechargement de la page courante. Pour tester si un cookie
      a été défini avec succès, vérifiez la présence du cookie au prochain
      chargement de la page avant que le cookie n&#039;expire. Le délai d&#039;expiration
      est défini en utilisant le paramètre <code class="parameter">expires_or_options</code>.
      Une façon simple de vérifier l&#039;existence du cookie est d&#039;utiliser
      <code class="literal">print_r($_COOKIE);</code>.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Les cookies doivent être effacés avec les mêmes paramètres
      que ceux utilisés lors de leur création. Si l&#039;argument
      <code class="parameter">value</code> est une chaîne vide et que les autres
      arguments correspondent exactement à un appel <span class="function"><strong>setcookie()</strong></span> précédent,
      alors le cookie avec le nom spécifié sera supprimé du client distant.
      En interne, cela est réalisé en positionnant la valeur à
      <code class="literal">&#039;deleted&#039;</code> et la date d&#039;expiration dans le passé.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Du fait que l&#039;assignation d&#039;une valeur valant <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> à un cookie
      tente de l&#039;effacer, les valeurs booléennes ne devraient pas être utilisées.
      À la place, utiliser <em>0</em> pour <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>
      et <em>1</em> pour <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Les noms des cookies peuvent être des tableaux de noms et seront
      disponibles dans les scripts PHP sous la forme de tableaux, mais
      des cookies différents seront placés sur le navigateur.
      Utiliser <span class="function"><a href="function.json-encode.php" class="function">json_encode()</a></span> pour définir un cookie
      avec des noms et des valeurs multiples. Il n&#039;est pas recommandé d&#039;utiliser
      la fonction <span class="function"><a href="function.serialize.php" class="function">serialize()</a></span> pour cela, car
      cela peut conduire à des problèmes de sécurité.
     </span>
    </li>
   </ul>
  </p>
  <p class="simpara">
   Les appels multiples à la fonction <span class="function"><strong>setcookie()</strong></span>
   seront effectués dans l&#039;ordre.
  </p>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.setcookie-seealso">
  <h3 class="title">Voir aussi</h3>
  <ul class="simplelist">
   <li><span class="function"><a href="function.header.php" class="function" rel="rdfs-seeAlso">header()</a> - Envoie un en-t&ecirc;te HTTP brut</span></li>
   <li><span class="function"><a href="function.setrawcookie.php" class="function" rel="rdfs-seeAlso">setrawcookie()</a> - Envoie un cookie sans encoder sa valeur en URL</span></li>
   <li><a href="features.cookies.php" class="link">Section sur les cookies</a></li>
   <li><a href="https://datatracker.ietf.org/doc/html/rfc6265" class="link external">&raquo;&nbsp;RFC 6265</a></li>
   <li><a href="https://datatracker.ietf.org/doc/html/rfc2109" class="link external">&raquo;&nbsp;RFC 2109</a></li>
  </ul>
 </div>


</div><?php manual_footer($setup); ?>