<?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="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="para rdfs-comment">
   Alternative Signatur, verfügbar ab PHP 7.3.0 (benannte Parameter werden
   nicht unterstützt):
  </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="para rdfs-comment">
   <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="para">
   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>
      <p class="para">
       Der Name des Cookies.
      </p>
     </dd>
    
    
     <dt><code class="parameter">value</code></dt>
     <dd>
      <p class="para">
       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>.
      </p>
     </dd>
    
    
     <dt><code class="parameter">expires_or_options</code></dt>
     <dd>
      <p class="para">
       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).
      </p>
      <p class="para">
       <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
        <p class="para">
         Wie bestimmt aufgefallen ist, wird der Parameter
         <code class="parameter">expires_or_options</code> als Unix-Timestamp
         übergeben und nicht im Datumsformat <code class="literal">Wdy, DD-Mon-YYYY
         HH:MM:SS GMT</code>. Die Konvertierung wird von PHP intern
         durchgeführt.
        </p>
       </p></blockquote>
      </p>
     </dd>
    
    
     <dt><code class="parameter">path</code></dt>
     <dd>
      <p class="para">
       Der Pfad auf dem Server, innerhalb 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.
      </p>
     </dd>
    
    
     <dt><code class="parameter">domain</code></dt>
     <dd>
      <p class="para">
       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.
      </p>
      <p class="para">
       Ä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.
      </p>
     </dd>
    
    
     <dt><code class="parameter">secure</code></dt>
     <dd>
      <p class="para">
       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>).
      </p>
     </dd>
    
    
     <dt><code class="parameter">httponly</code></dt>
     <dd>
      <p class="para">
       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 eine effektive Hilfe sein kann, um
       Identitätsdiebstahl per XSS-Angriff zu vermindern (obwohl 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>
      </p>
     </dd>
    
    
     <dt><code class="parameter">options</code></dt>
     <dd>
      <p class="para">
       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. Ist irgendein anderer Schlüssel vorhanden, wird ein Fehler der
       Stufe <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> generiert. 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.
      </p>
      <p class="para">
       <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
        <p class="para">
         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.
        </p>
       </p></blockquote>
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.setcookie-returnvalues">
  <h3 class="title">Rückgabewerte</h3>
  <p class="para">
   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 changelog" id="refsect1-function.setcookie-changelog">
  <h3 class="title">Changelog</h3>
  <p class="para">
   <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>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>

  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-function.setcookie-examples">
  <h3 class="title">Beispiele</h3>
  <p class="para">
   Die folgenden Beispiele zeigen einige Möglichkeiten, Cookies zu senden.
   <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: #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: #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: #FF8000">/* verfällt in 1 Stunde */<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>
  <p class="para">
   Zu beachten ist, dass der Wertebereich des Cookies automatisch URL-konform
   kodiert (urlencoded) wird, sobald das Cookie gesendet wird, und es beim
   Erhalt automatisch dekodiert und einer Variablen zugewiesen wird, die
   denselben Namen wie das Cookie trägt. Wenn dies nicht gewünscht ist, kann
   stattdessen <span class="function"><a href="function.setrawcookie.php" class="function">setrawcookie()</a></span> verwendet werden. Um die
   Inhalte unseres Test-Cookies in einem Skript sichtbar zu machen, kann
   einfach eines der folgenden Beispiele verwendet werden:
  </p>
  <p class="para">
   <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">// Ein anderer Weg zu 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>
  </p>
  <p class="para">
   <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>
     Beim Löschen eines Cookies sollte sichergestellt werden, dass das
     Verfallsdatum in der Vergangenheit liegt, um den Mechanismus zum Löschen
     des Cookies im Browser auszulösen. Die folgenden Beispiele zeigen, wie
     die im vorigen Beispiel gesendeten Cookies wieder gelöscht werden:
    </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 Verfalls-Zeitpunktes 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>
  </p>
  <p class="para">
   <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 auch ein Array von Cookies
     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>
  </p>
 </div>


 <div class="refsect1 notes" id="refsect1-function.setcookie-notes">
  <h3 class="title">Anmerkungen</h3>
  <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
   <p class="para">
    Sie können den Ausgabepuffer verwenden, um Ausgaben vor dem Aufruf dieser
    Funktion duchführen zu können. Dies hat allerdings zur Folge, dass alle
    Ihre Ausgaben zum Browser auf dem Server zwischengespeichert werden, bis
    Sie diese senden. Sie können dies in Ihrem Skript mittels der Funktionen
    <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> oder
    mittels der Konfigurationseinstellung <code class="literal">output_buffering</code>
    in Ihrer <var class="filename">php.ini</var>, oder Sie ändern entsprechende
    Konfigurationseinstellungen am Server.
   </p>
  </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, prüfen Sie noch vor der Ablaufzeit auf der nächsten
      geladenen Seite, 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 Sie keine boolschen Werte
      verwenden. Nutzen Sie statt dessen <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>.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Namen von Cookies können auch als Arraynamen gesetzt werden und stehen
      dann in Ihren Skripten als Arrays zu Verfügung, während sie auf dem
      System des Benutzers als separate Cookies abgespeichert werden. Erwägen
      Sie den Einsatz von <span class="function"><a href="function.explode.php" class="function">explode()</a></span>, 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>
  <p class="para">
   <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>
  </p>
 </div>


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