Zum Inhalt springen

PHP-Funktion setcookie(): Alles, was Sie wissen müssen

Als PHP-Entwickler müssen Sie möglicherweise Cookies setzen, um Informationen auf der Clientseite zu speichern. Die setcookie()-Funktion ist eine integrierte PHP-Funktion, die dies übernimmt. In diesem Artikel behandeln wir die moderne Syntax, die Verwendung sowie das Lesen und Löschen von Cookies.

Was ist die setcookie()-Funktion?

Die setcookie()-Funktion ist eine integrierte PHP-Funktion, mit der Sie ein Cookie auf der Clientseite festlegen können.

So verwenden Sie die setcookie()-Funktion

Die Verwendung der setcookie()-Funktion ist unkompliziert. Die arraybasierte Options-Syntax wurde in PHP 7.3 eingeführt. In PHP 8.1 wurde die veraltete Positions-Syntax mit sieben Parametern als veraltet markiert (deprecated). Hier ist die moderne Syntax:

Die PHP-Syntax der setcookie()-Funktion

php
setcookie($name, $value, $options);

Der $options-Parameter ist ein assoziatives Array, das die folgenden Schlüssel akzeptiert:

  • expires: Das Ablaufdatum des Cookies (Unix-Zeitstempel).
  • path: Der Pfad auf dem Server, unter dem das Cookie verfügbar ist.
  • domain: Die Domain, unter der das Cookie verfügbar ist.
  • secure: Gibt an, ob das Cookie nur über HTTPS übertragen werden soll.
  • httponly: Gibt an, ob das Cookie nur über HTTP zugänglich sein soll.
  • samesite: Beschränkt das Cookie auf Same-Site-Anfragen. Akzeptiert 'Strict', 'Lax' oder 'None'.

Hier ist ein Beispiel dafür, wie Sie die setcookie()-Funktion zum Festlegen eines Cookies verwenden:

So verwenden Sie die setcookie()-Funktion?

php
<?php

$options = [
    'expires'  => time() + (86400 * 30), // 30 days
    'path'     => '/',
    'domain'   => '.example.com',
    'secure'   => true,
    'httponly' => true,
    'samesite' => 'Lax'
];
setcookie('username', 'john', $options);

In diesem Beispiel verwenden wir die setcookie()-Funktion, um ein Cookie mit dem Namen username und dem Wert john festzulegen. Wir geben außerdem die Ablaufzeit als 30 Tage ab dem aktuellen Zeitpunkt an, den Serverpfad als /, die Domain als .example.com und setzen die Flags secure, httponly und samesite, um sicherzustellen, dass das Cookie nur über HTTPS übertragen, nicht über Client-seitiges Skripting zugänglich und auf Same-Site-Anfragen beschränkt wird.

Cookies lesen

Mit setcookie() festgelegte Cookies sind bei nachfolgenden Seitenanfragen automatisch im Superglobal-Array $_COOKIE verfügbar. Sie können ihre Existenz prüfen und ihre Werte wie folgt lesen:

php
if (isset($_COOKIE['username'])) {
    echo "Welcome, " . htmlspecialchars($_COOKIE['username']);
}

Cookies löschen

Um ein Cookie zu löschen, müssen Sie seine Ablaufzeit auf einen Zeitstempel in der Vergangenheit setzen. Der Wert kann leer gelassen oder auf null gesetzt werden.

php
setcookie('username', '', [
    'expires' => time() - 3600,
    'path'    => '/',
]);

Wichtige Hinweise

  • Rückgabewert: setcookie() gibt bei Erfolg true und bei einem Fehler false zurück (auch wenn die Header bereits gesendet wurden).
  • Bereits gesendete Header: Cookies müssen festgelegt werden, bevor irgendeine Ausgabe an den Browser gesendet wird (einschließlich HTML, Leerzeichen oder echo). Andernfalls löst PHP eine Warnung „Bereits gesendete Header“ aus.
  • Automatische Kodierung: setcookie() kodiert Cookie-Werte automatisch URL-codiert, sodass eine manuelle Kodierung in der Regel nicht erforderlich ist.

Fazit

Die setcookie()-Funktion ist ein nützliches Werkzeug zum Festlegen von Cookies in Ihrer PHP-Webanwendung. Durch das Verständnis der modernen Syntax und Verwendung der Funktion können Sie Client-seitige Daten problemlos verwalten. Wir hoffen, dass dieser Artikel informativ und hilfreich war, um zu verstehen, wie man Cookies in PHP festlegt, liest und löscht.

Practice

Welche Faktoren können die setcookie-Funktion in PHP beeinflussen?

Finden Sie das nützlich?

Dual-run-Vorschau — vergleichen Sie mit den Symfony-Routen live.