PHP 4.3

9.7 Löschen von Cookies

Um einen Cookie unwiderruflich zu löschen, müssen Sie, wie auf der vorhergehenden Seite bereits angedeutet, ein wenig "um die Ecke denken". PHP stellt dafür nämlich keine explizite Anweisung zur Verfügung.
Der Cookie verfällt, indem Sie ihn quasi erneut setzen, jedoch als Zeitpunkt des Verfallsdatums eine Zeitangabe in der Vergangenheit angeben. Zum Beispiel time()-3600.

Cookies löscht man mit PHP wie folgt:
<?php

  setcookie("neuer_cookie", "Ich wurde gerade gelöscht.", time()-3600);
  if (isset($HTTP_COOKIE_VARS["neuer_cookie"])) {
    echo "Inhalt des Cookies: " . $HTTP_COOKIE_VARS["neuer_cookie"];
  } else {
    echo "Der Cookie ist bereits abgelaufen.";
  }

?>

Browserausgabe beim ersten Aufruf:

Inhalt des Cookies: Ich verfalle nach einer Stunde

Browserausgabe beim zweiten Aufruf:


Der Cookie ist bereits abgelaufen.

Beim ersten Aufruf des Skripts liest PHP automatisch alle Cookies aus, für die es entsprechend der Sicherheitseinstellungen eine Berechtigung besitzt, - unter anderem auch den Cookie neuer_cookie. Wenn Sie sich zurückerinnern, hatten wir diesem in einem anderen Beispiel den Wert "Ich verfalle nach einer Stunde" zugewiesen. Wenn Sie das oben abgebildete Skript innerhalb der Haltbarkeitsdauer, die wir mit einer Stunde festgelegt haben, aufrufen, erscheint also zuerst einmal die bereits bekannte Ausgabe "Inhalt des Cookies: Ich verfalle nach einer Stunde".
Anschließend folgt die Anweisung zum Löschen des Cookies.
Beim zweiten Aufruf der Datei erscheint deshalb die Meldung, dass der Cookie bereits verfallen ist. Der Wert des Cookies "Ich wurde gerade gelöscht." kommt nie zur Anzeige, weil er zu einem Cookie gehört, der bereits verfallen ist.

Sollte der erste Aufruf des Skripts erst nach dem Ablauf der Haltbarkeitsdauer von einer Stunde erfolgen, erscheint natürlich sofort die Meldung, dass der Cookie bereits verfallen ist.

Beachten Sie, dass Sie den Cookie in der gleichen Weise zum Löschen ansprechen müssen, wie er ursprünglich definiert wurde. Stimmen mit Ausnahme der Verfallszeit und des Wertes die Parameter nicht absolut mit der Originaldefinition überein, wird ein weiterer Cookie erzeugt, der aufgrund des Datums in der Vergangenheit aber sofort wieder verworfen wird. Der eigentlich zu löschende Cookie jedoch bleibt weiter bestehen.
Bedenken Sie außerdem die Problematik des möglichen Zeitunterschieds zwischen Server und Client. Mitunter reicht die Angabe von time()-3600 nicht aus.

Kommentare (0)

Ihr Kommentar

Name