<?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 => 'de',
  ),
  'this' => 
  array (
    0 => 'function.setcookie.php',
    1 => 'setcookie',
    2 => 'Sendet ein Cookie',
  ),
  'up' => 
  array (
    0 => 'ref.network.php',
    1 => 'Netzwerk-Funktionen',
  ),
  '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' => 'de',
    '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">Sendet ein Cookie</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.setcookie-description">
  <h3 class="title">Beschreibung</h3>
  <div class="methodsynopsis dc-description">
   <span class="modifier">function</span> <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">Alternative Signatur, verfügbar ab PHP 7.3.0 (benannte Parameter werden nicht unterstützt):</p>
  <div class="methodsynopsis dc-description"><span class="modifier">function</span> <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> definiert ein mit den
   HTTP-Header-Informationen zu übertragendes Cookie. Wie andere Header auch,
   müssen Cookies <em>vor</em> jeglicher Ausgabe des Skripts
   gesendet werden (dies ist eine Einschränkung des Protokolls). Das bedeutet,
   dass diese Funktion vor jeglicher Ausgabe, einschließlich der Ausgabe von
   <code class="literal">&lt;html&gt;</code>- oder <code class="literal">&lt;head&gt;</code>-Tags
   sowie jeder Art von Whitespace, aufgerufen werden muss.
  </p>
  <p class="simpara">
   Sind die Cookies einmal gesetzt, kann beim nächsten Seitenaufruf anhand des
   <var class="varname"><a href="reserved.variables.cookies.php" class="classname">$_COOKIE</a></var>-Arrays auf diese zugegriffen werden. Die
   Cookie-Werte können auch in <var class="varname"><a href="reserved.variables.request.php" class="classname">$_REQUEST</a></var> vorhanden sein.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.setcookie-parameters">
  <h3 class="title">Parameter-Liste</h3>
  <p class="para">
   <a href="https://datatracker.ietf.org/doc/html/rfc6265" class="link external">&raquo;&nbsp;RFC 6265</a> liefert die normative
   Referenz, wie die jeweiligen <span class="function"><strong>setcookie()</strong></span>-Parameter
   interpretiert werden.
   <dl>
    
     <dt><code class="parameter">name</code></dt>
     <dd>
      <span class="simpara">
       Der Name des Cookies.
      </span>
     </dd>
    
    
     <dt><code class="parameter">value</code></dt>
     <dd>
      <span class="simpara">
       Der Wert des Cookies. Dieser Wert wird auf dem Computer des Benutzers
       gespeichert, weshalb darin keine sensiblen Informationen gespeichert
       werden sollten. Angenommen der Parameter <code class="parameter">name</code>
       ist &#039;cookiename&#039;, so erhält man seinen Wert mittels
       <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">
       Der Zeitpunkt, an dem das Cookie ungültig wird. Dies ist ein
       Unix-Timestamp, also die Anzahl Sekunden seit Beginn der Unix-Epoche
       (1. Januar 1970). Eine Möglichkeit, diesen festzulegen, besteht darin,
       die Anzahl der Sekunden, bevor das Cookie abläuft, zum Ergebnis des
       Aufrufs von <span class="function"><a href="function.time.php" class="function">time()</a></span> zu addieren. Zum Beispiel setzt
       <code class="literal">time()+60*60*24*30</code> die Verfallszeit des Cookies auf
       30 Tage. Eine weitere Möglichkeit ist, die Funktion
       <span class="function"><a href="function.mktime.php" class="function">mktime()</a></span> zu verwenden. Wenn dieser Parameter auf
       <code class="literal">0</code> gesetzt oder weggelassen wird, verfällt das Cookie
       am Ende der Session (wenn der Browser geschlossen wird).
      </span>
      <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
       <span class="simpara">
        Der Parameter <code class="parameter">expires_or_options</code> erwartet einen
        Unix-Timestamp und nicht das Datumsformat <code class="literal">Wdy, DD-Mon-YYYY
        HH:MM:SS GMT</code>, da die Konvertierung von PHP intern
        durchgeführt wird.
       </span>
      </p></blockquote>
     </dd>
    
    
     <dt><code class="parameter">path</code></dt>
     <dd>
      <span class="simpara">
       Der Pfad auf dem Server, in dem das Cookie verfügbar sein wird.
       Ist er auf <code class="literal">&#039;/&#039;</code> gesetzt, wird das Cookie innerhalb
       der gesamten <code class="parameter">domain</code> verfügbar. Ist er auf
       <code class="literal">&#039;/foo/&#039;</code> gesetzt, wird das Cookie nur innerhalb des
       Verzeichnisses <code class="literal">/foo/</code> sowie allen Unterverzeichnissen
       wie z. B. <code class="literal">/foo/bar/</code> von <code class="parameter">domain</code>
       verfügbar. Der Standardwert ist das aktuelle Verzeichnis, in dem das
       Cookie gesetzt wurde.
      </span>
     </dd>
    
    
     <dt><code class="parameter">domain</code></dt>
     <dd>
      <span class="simpara">
       Die (Sub)-Domain, der das Cookie zur Verfügung steht. Wird dies auf
       eine Subdomain (wie <code class="literal">&#039;www.example.com&#039;</code>) gesetzt, dann
       steht dieser Subdomain und allen anderen Subdomains davon (z. B.
       w2.www.example.com) das Cookie zur Verfügung. Um das Cookie der ganzen
       Domain zur Verfügung zu stellen (einschließlich aller Subdomains
       davon), muss der Wert einfach auf den Domainnamen (in diesem Fall
       <code class="literal">&#039;example.com&#039;</code>) gesetzt werden.
      </span>
      <span class="simpara">
       Ältere Browser, die noch immer das veraltete
       <a href="https://datatracker.ietf.org/doc/html/rfc2109" class="link external">&raquo;&nbsp;RFC 2109</a> implementieren, können
       ein führendes <code class="literal">.</code> benötigen, um alle Subdomains
       abzudecken.
      </span>
     </dd>
    
    
     <dt><code class="parameter">secure</code></dt>
     <dd>
      <span class="simpara">
       Gibt an, dass das Cookie vom Client nur über eine sichere
       HTTPS-Verbindung übertragen werden soll. Ist der Wert auf <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>
       gesetzt, wird das Cookie nur gesendet, wenn eine sichere Verbindung
       besteht. Auf der Serverseite muss der Programmierer selbst darauf
       achten, dass entsprechende Cookies über eine sichere Verbindung
       gesendet werden (z. B. unter Berücksichtigung von
       <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">
       Wenn auf <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> gesetzt, ist das Cookie nur via HTTP-Protokoll
       zugänglich. Das bedeutet, dass das Cookie nicht mehr für Skriptsprachen
       wie z. B. JavaScript, auslesbar/veränderbar ist. Es wird vermutet, dass
       diese Einstellung helfen kann, Identitätsdiebstahl durch XSS-Angriffe zu
       vermindern, auch wenn sie nicht von allen Browsern unterstützt wird.
       Diese Behauptung wird jedoch oft angezweifelt. <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> oder <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">
       Ein assoziatives <span class="type"><a href="language.types.array.php" class="link">Array</a></span>, das die Schlüssel
       <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> und <code class="literal">samesite</code> enthalten
       kann.
      </span>
      <span class="simpara">
       Die Werte haben dieselbe Bedeutung wie für die gleichnamigen Parameter
       beschrieben. Der Wert des <code class="literal">samesite</code>-Elements sollte
       entweder <code class="literal">None</code>, <code class="literal">Lax</code> oder
       <code class="literal">Strict</code> sein. Ist eine der erlaubten Optionen nicht
       angegeben, dann ist ihr Standardwert derselbe wie für den expliziten
       Parameter. Wird das <code class="literal">samesite</code>-Element nicht
       angegeben, dann wird kein SameSite-Cookie-Attribut gesetzt.
      </span>

      <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
       <span class="simpara">
        Um ein Cookie mit Attributen zu setzen, die nicht unter den
        aufgelisteten Schlüsseln sind, kann die Funktion
        <span class="function"><a href="function.header.php" class="function">header()</a></span> verwendet werden.
       </span>
      </p></blockquote>
      <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
       <span class="simpara">
        Wenn <code class="literal">samesite</code> auf <code class="literal">&quot;None&quot;</code> gesetzt
        ist, muss auch <code class="literal">secure</code> aktiviert sein, da das Cookie
        sonst vom Client blockiert wird.
       </span>
      </p></blockquote>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.setcookie-returnvalues">
  <h3 class="title">Rückgabewerte</h3>
  <p class="simpara">
   Erfolgt eine Ausgabe vor dem Aufruf dieser Funktion, wird
   <span class="function"><strong>setcookie()</strong></span> fehlschlagen und <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> zurückgeben. Wenn
   <span class="function"><strong>setcookie()</strong></span> erfolgreich durchgeführt wird, wird <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>
   zurückgegeben. Dies sagt jedoch nichts darüber aus, ob der Benutzer das
   Cookie auch akzeptiert hat.
  </p>
 </div>


 <div class="refsect1 errors" id="refsect1-function.setcookie-errors">
  <h3 class="title">Fehler/Exceptions</h3>
  <p class="simpara">
   Wenn das <code class="parameter">options</code>-Array nicht unterstützte Schlüssel
   enthält:
  </p>
  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara">
     Vor PHP 8.0.0 wurde ein <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> erzeugt.
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     Ab PHP 8.0.0 wird ein <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> geworfen.
    </span>
   </li>
  </ul>
 </div>


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

    </thead>

    <tbody class="tbody">
     <tr>
      <td>8.2.0</td>
      <td>
       Das Datumsformat des gesendeten Cookies ist nun
       <code class="literal">&#039;D, d M Y H:i:s \G\M\T&#039;</code>; vorher war es
       <code class="literal">&#039;D, d-M-Y H:i:s T&#039;</code>.
      </td>
     </tr>

     <tr>
      <td>8.0.0</td>
      <td>
       Die Übergabe nicht unterstützter Schlüssel wirft nun einen
       <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span>, anstatt ein
       <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> auszulösen.
      </td>
     </tr>

     <tr>
      <td>7.3.0</td>
      <td>
       Eine alternative Signatur, die ein
       <code class="parameter">options</code>-Array unterstützt, wurde hinzugefügt.
       Diese Signatur unterstützt auch das Setzen des
       SameSite-Cookie-Attributs.
      </td>
     </tr>

    </tbody>
   
  </table>

 </div>


 <div class="refsect1 examples" id="refsect1-function.setcookie-examples">
  <h3 class="title">Beispiele</h3>
  <p class="simpara">
   Die Auswirkungen der folgenden Beispiele lassen sich in der Cookie-Liste
   der Entwicklerwerkzeuge des Browsers beobachten (in der Regel im Tab
  &quot;Speicher&quot; im Firefox oder &quot;Anwendung&quot; in Chrome).
  </p>
  <div class="example" id="example-1">
   <p><strong>Beispiel #1 <span class="function"><strong>setcookie()</strong></span>-Beispiele</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">'irgendetwas von irgendwo'</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// Setzt ein "Session-Cookie", das beim Schließen des Browsers verfällt<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">// Setzt ein Cookie, das in 1 Stunde verfällt<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">// Setzt ein Cookie, das nur für einen bestimmten Pfad einer bestimmten Domain gilt<br />// Es ist zu beachten, dass die verwendete Domain mit der Site-Domain übereinstimmen sollte<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">
   Zu beachten ist, dass der Wertebereich des Cookies automatisch von PHP
   URL-konform kodiert (urlencoded) und wieder dekodiert wird. Dies kann
   vermieden werden, indem stattdessen <span class="function"><a href="function.setrawcookie.php" class="function">setrawcookie()</a></span>
   verwendet wird.
  </p>
  <p class="simpara">
   Um den Inhalt der im obigen Beispiel gesetzten Cookies in einem späteren
   Request zu sehen:
  </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">// Ein bestimmtes Cookie ausgeben<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">// Eine weitere Möglichkeit zum Debuggen/Testen ist, alle Cookies anzuzeigen<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>Beispiel #2 <span class="function"><strong>setcookie()</strong></span>-Beispiele zum Löschen</strong></p>
   <div class="example-contents"><p>
    Um ein Cookie zu löschen, muss das Verfallsdatum auf einen Wert in der
    Vergangenheit gesetzt werden (jedoch nicht auf null, was für
    Session-Cookies reserviert ist).
   </p></div>
   <div class="example-contents"><p>
    Um die im vorigen Beispiel gesetzten Cookies zu löschen:
   </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">// Setzen des Verfallszeitpunktes auf 1 Stunde in der Vergangenheit<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>Beispiel #3 <span class="function"><strong>setcookie()</strong></span> und Arrays</strong></p>
   <div class="example-contents"><p>
    Mit der Array-Schreibweise im Cookienamen kann ein &quot;Array von Cookies&quot;
    gesetzt werden. Dadurch werden so viele Cookies gesetzt, wie das Array
    Elemente hat, aber wenn das Cookie vom Skript empfangen wird, werden alle
    Werte in ein einziges Array mit dem Cookienamen eingelesen:
   </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">// Setzen der Cookies<br /></span><span style="color: #0000BB">setcookie</span><span style="color: #007700">(</span><span style="color: #DD0000">"cookie[drei]"</span><span style="color: #007700">, </span><span style="color: #DD0000">"cookiedrei"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">setcookie</span><span style="color: #007700">(</span><span style="color: #DD0000">"cookie[zwei]"</span><span style="color: #007700">, </span><span style="color: #DD0000">"cookiezwei"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">setcookie</span><span style="color: #007700">(</span><span style="color: #DD0000">"cookie[eins]"</span><span style="color: #007700">, </span><span style="color: #DD0000">"cookieeins"</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Nach dem Neuladen der Seite wieder ausgeben<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>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:</p></div>
   <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">drei : cookiedrei
zwei : cookiezwei
eins : cookieeins</pre>
</div>
   </div>
  </div>
  <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
   <span class="simpara">
    Die Verwendung von Trennzeichen wie <code class="literal">[</code> und
    <code class="literal">]</code> als Teil des Cookie-Namens ist nicht konform mit RFC
    6265, Abschnitt 4, soll aber laut RFC 6265, Abschnitt 5, von User-Agents
    unterstützt werden.
   </span>
  </p></blockquote>
 </div>


 <div class="refsect1 notes" id="refsect1-function.setcookie-notes">
  <h3 class="title">Anmerkungen</h3>
  <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
   <span class="simpara">
    Mit Hilfe der Ausgabepufferung lassen sich Ausgaben vor dem Aufruf dieser
    Funktion zulassen. Alle Ausgaben werden gepuffert, bis sie geleert werden
    (entweder explizit oder am Ende der Skriptausführung). Dies wird durch
    Aufruf von <span class="function"><a href="function.ob-start.php" class="function">ob_start()</a></span> und
    <span class="function"><a href="function.ob-end-flush.php" class="function">ob_end_flush()</a></span> im Skript erreicht oder durch Aktivieren
    der Konfigurationseinstellung <code class="literal">output_buffering</code> in der
    <var class="filename">php.ini</var> oder in den Serverkonfigurationsdateien.
   </span>
  </p></blockquote>
  <p class="para">
   Häufige Probleme:
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      Cookies werden erst beim nächsten Laden einer Seite sichtbar, für die
      das Cookie sichtbar sein soll. Um zu testen, ob ein Cookie erfolgreich
      gesetzt wurde, ist noch vor der Ablaufzeit auf der nächsten geladenen
      Seite zu prüfen, ob das Cookie vorhanden ist. Die Ablaufzeit wird
      mittels des Parameters <code class="parameter">expires_or_options</code>
      gesetzt. Eine gute Möglichkeit, die Existenz von Cookies zu prüfen, ist
      einfach <code class="literal">print_r($_COOKIE);</code> aufzurufen.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Cookies müssen mit denselben Parametern gelöscht werden, mit denen sie
      gesetzt wurden. Wenn der Parameter <code class="parameter">value</code> ein
      leerer String ist und alle anderen Werte dem vorherigen Aufruf von
      <span class="function"><strong>setcookie()</strong></span> entsprechen, wird das Cookie mit dem
      angegebenen Namen vom Client gelöscht. Dies wird intern ausgeführt,
      indem der Wert auf <code class="literal">&#039;deleted&#039;</code> gesetzt wird und die
      Verfallszeit in die Vergangenheit gelegt wird.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Da beim Setzen eines Cookies mit dem Wert <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> versucht wird, das
      entsprechende Cookie zu löschen, sollten keine boolschen Werte
      verwendet werden. Stattdessen sollte <em>0</em> für <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>
      und <em>1</em> für <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> verwendet werden.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Namen von Cookies können auch als Arraynamen gesetzt werden und stehen
      dann in den PHP-Skripten als Arrays zur Verfügung, während sie vom
      Browser als separate Cookies abgespeichert werden. Es ist der Einsatz
      von <span class="function"><a href="function.json-encode.php" class="function">json_encode()</a></span> in Erwägung zu ziehen, um ein
      Cookie mit mehreren Namen und Werten zu setzen. Es ist nicht
      empfehlenswert, zu diesem Zweck <span class="function"><a href="function.serialize.php" class="function">serialize()</a></span>
      einzusetzen, da hieraus Sicherheitslöcher erwachsen können.
     </span>
    </li>
   </ul>
  </p>
  <p class="simpara">
   Mehrfache Aufrufe von <span class="function"><strong>setcookie()</strong></span> werden in der
   Reihenfolge ihres Aufrufs ausgeführt.
  </p>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.setcookie-seealso">
  <h3 class="title">Siehe auch</h3>
  <ul class="simplelist">
   <li><span class="function"><a href="function.header.php" class="function" rel="rdfs-seeAlso">header()</a> - Sendet einen HTTP-Header in Rohform</span></li>
   <li><span class="function"><a href="function.setrawcookie.php" class="function" rel="rdfs-seeAlso">setrawcookie()</a> - Sendet ein Cookie, ohne seinen Wert zu URL-kodieren</span></li>
   <li><a href="features.cookies.php" class="link">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); ?>