studyklar
IProg · Skript 6 · Abschnitt 2

Cookies in PHP: setcookie und $_COOKIE

PHP kann dem Browser einen Cookie geben und ihn bei der nächsten Anfrage wieder lesen. Rechts entsteht ein kleiner Besuchszähler; danach siehst du, was zwischen Browser und Server im Header hin- und hergeht. Mit Weiter geht es Schritt für Schritt voran.

Worum es geht

Skript 06, Folie 6: Cookies in PHP.

HTTP vergisst nach jeder Antwort alles. Ein Cookie ist einer der Lösungsansätze: Der Browser speichert ein Stück Daten und schickt es bei jeder Anfrage mit. Wie setzt und liest man so einen Cookie in PHP?

Aus Skript 06, Folie 4: Clientbasierter Ansatz: Zustandsinformationen im Client speichern, mit Cookies.

So gehen wir vor:

  1. Was ein Cookie ist.
  2. Setzen mit setcookie.
  3. Lesen mit $_COOKIE und prüfen mit isset.
  4. Ein Besuchszähler, zweimal aufgerufen.
  5. Eine Falle: setcookie nach der ersten Ausgabe.
  6. Eine Klausurfrage dazu.

Was ein Cookie ist

Skript · Cookies in PHP
  • Cookies einfach setzen über Funktion setcookie($cname, "Wert", …)
  • Auslesen über globales Array $val = $_COOKIE[$cname]
  • Testen ob gesetzt isset($_COOKIE[$cname])

Ein Cookie ist ein kleines Paar aus Name und Wert, etwa besuche=1. Der Server gibt es dem Browser, der Browser speichert es. Bei jeder weiteren Anfrage an diesen Server schickt der Browser es von selbst mit.

Rechts steht der Anfang unseres Beispiels: In $cname liegt der Name des Cookies, besuche. Das Skript soll zählen, wie oft derselbe Browser die Seite aufruft.

Aus Skript 03, Folie 8: Cookies speichern Daten für eine Web-Seite im Browser. Sie bleiben in der Regel auch nach dem Schließen des Browsers erhalten.

Setzen mit setcookie

setcookie($cname, $anzahl, time() + 3600);

setcookie bekommt den Namen, den Wert und als dritten Parameter die Ablaufzeit. Als Wert nehmen wir $anzahl, die Zahl der Besuche; sie berechnen wir gleich in Schritt 3. time() ist die aktuelle Zeit in Sekunden; plus 3600 heißt: Der Cookie gilt eine Stunde. Ohne diesen Parameter löscht der Browser den Cookie beim Schließen. Das meint die Folie mit „über weitere Parameter kann die Dauer beeinflusst werden“.

Genauer als auf der Folie: Dort steht, der Cookie werde „im Header der Anfrage geschickt“. setcookie schreibt ihn aber in den Header der Antwort, als Zeile Set-Cookie. Erst bei den folgenden Anfragen schickt der Browser ihn im Header der Anfrage zurück, als Zeile Cookie. Der Header ist der Teil einer HTTP-Nachricht vor dem eigentlichen Inhalt.

Noch 7 Schritte bis zum Ergebnis
Den ganzen Lösungsweg sehen Studierende und Lehrende der HS KL. Registriere dich mit deiner Adresse @stud.hs-kl.de oder @hs-kl.de, dann geht es hier direkt weiter.

Abbildung 1

<?php$cname = 'besuche';      
LegendeZeilen des Schrittsbesuche.php: Ein Besuchszähler, der sich in einem Cookie merkt, wie oft du da warst.