12.02.22 771 Views 4

credit: ©stock.adobe

PHP Tutorial #34

PHP Cookies

Cookies, genauer gesagt HTTP-Cookies, sind Datenpakete, die von Webbrowsern erzeugt werden, um individuelle Nutzerdaten zu speichern und an den Server zurückzuschicken. Wie genau sich das mit PHP bewerkstelligen lässt, zeigen wir dir hier.

Falconbyte unterstüzen

Betrieb und Pflege von Falconbyte brauchen viel Zeit und Geld. Um dir auch weiterhin hochwertigen Content anbieten zu können, kannst du uns sehr gerne mit einem kleinen "Trinkgeld" unterstützen.

Schnelles Code-Beispiel

// Cookie erstellen
setcookie("Wert", "Delorean", time() + (86400 * 30), "/");

    Inhaltsverzeichnis

  1. Was sind Cookies?
  2. Cookies erstellen
  3. Mit mehreren Cookies arbeiten
  4. Cookie-Wert ändern oder Cookie löschen

Was sind Cookies?

Oftmals ist es notwendig, benutzerspezifische Daten länger als die Dauer einer Session zu speichern. Dies ist möglich und zwar durch den Einsatz von Cookies.

Was ein Cookie - genauer gesagt HTTP-Cookie - ist, lässt sich vereinfacht ausgedrückt so sagen:

  • Ein Cookie ist eine kleine Textdatei, die beim Besuch der Website auf dem Computer des Benutzers gespeichert wird.

Zwar werden Cookies auf dem Rechner des Nutzers lokal abgelegt, aber Erzeugung und Abfrage erfolgen durch den WebServer via WebBrowser. Die Kommunikationswege sehen so aus:

PHP Server MySQL Grafik

Für Cookies gibt es verschiedene Einsatzmöglichkeiten. In der Regel werden sie gebraucht, um Daten über den Nutzer zu sammeln oder ihn zu tracken. Hier einige konkrete Anwendungsbeispiele für Cookies:

  • Identifikation des Nutzers und Speichern der Login-Daten (= Authentication Cookies)
  • Analyse des Nutzerverhaltens auf einer Website (Welche Seiten besucht der Nutzer? Welche Links klickt er? (= Tracking Cookies)
  • Artikel im Warenkorb aufnehmen und darin speichern

Wieso heißen Cookies eigentlich "Cookies"?

Der Begriff "Cookie" (dt. Keks, Plätzchen) wurde vom Web-Programmierer Lou Montulli geprägt, der ihn von der bereits exisitierenden Technologie des "magic cookie" ableitete. Ein Magic-Cookie ist ein kleines Datenpaket, das zwischen Computerprogrammen ausgetauscht wird. Unser HTTP-Cookie ist damit eine Spezielform des Magic-Cookie.

Cookies erstellen

Mit der PHP-Funktion setCookie() können wir ein Cookie flott erstellen. Die Funktion kann bis zu sechs Argumente aufnehmen, wobei nur der erste Parameter verpflichtend ist.

setcookie(name, value, expire, path, domain, secure);            

Die Bedeutung der einzelnen Parameter sind wie folgt:

  • name: der Name des Cookies (Pflichtangabe)
  • value: Speichert die Daten des Cookies
  • expire: Legt das Verfallsdatum des Cookies in der Zukunft gemessen in Sekunden fest. Nach Ablauf der Zeit kann auf den Cookie nicht mehr zugegriffen werden - bleibt dieser Parameter ungenutzt, läuft der Cookie ab, sobald der WebBrowser geschlossen wird.
  • path: Legt das Web-Verzeichnis fest, in dem der Cookie gültig ist. Ein einfacher Schrägstrich "/" bedeutet, dass der Cookie auf der gesamten Website gültig ist.
  • domain: Legt die Domain fest, die diesen Cookie auslesen kann.
  • secure: Wenn der Wert 1 übergeben wird, kann der Cookie nur über sichere SSL-Verbindungen übertragen werden.

Alles klar? Lass uns jetzt einen Cookie mit dem Namen "user" und dem Wert "Bucky" erstellen. Der Cookie soll nach 7 Tagen ablaufen und auf der gesamten Website gültig sein:

<?php
$cookie_name = "user";
$cookie_value = "Bucky";
setcookie($cookie_name, $cookie_value, time() + (86400 * 7), "/");
?>

Noch ein Wort zum Ablaufdatum des Cookies in der Zukunft: Ein Tag entspricht 86400 Sekunden - also rechnen wir 86400 * 7 für eine Gültigkeit von sieben Tagen. Diese Zeitspanne addieren wir noch auf den jetztigen Zeitpunkt, der in Sekunden nach dem UNIX-Timestamp (1.1.1970, 0:00 Uhr) repräsentert und durch die Funktion time() zurückgeliefert wird.

Beachte außerdem:

  • Die Funktion setcookie() muss vor dem <html>-Tag gesetzt werden.

Cookie abfragen

Alle Cookies werden in einem assoziativen globalen Array namens $_COOKIE gespeichert. Darüber lassen sich die einzelnen Cookie-Values ganz easy abfragen, z.B.:

echo "Name: " . $_COOKIE[$cookie_name]; // Name: Bucky

Wo ist mein Cookie? Seite aktualisieren!

Wenn du einen Cookie setzt, kann auf diesen beim ersten Aufrufen der Website noch nicht zugefriffen werden und der Versuch, den Wert des Cookies etwa mit echo am Bildschirm anzuzeigen, führt zunächst ins Leere.

Keine Sorge: Das ist völlig normal. Der Grund dafür ist, dass der Cookie beim ersten Seitenaufruf zunächst einmal auf dem System des Users abgelegt wird. Erst beim zweiten Seitenaufruf bzw. Refresh kann der nun auf dem System des Users abgelegte Cookie auf das Skript reagieren.

Mit mehreren Cookies arbeiten

Ein Cookie kommt selten allein... Falls wir mehrere Cookies setzen wollen, verwenden wir für jeden Cookie jeweils einmal die setCookie()-Funktion:

// Cookies erstellen
setcookie("name", "Bucky", time() + (86400 * 30), "/");
setcookie("color", "green", time() + (86400 * 30), "/");

// Cookies aufrufen
echo "Farbe: " . $_COOKIE["name"] . "<br>";
echo "Name: " . $_COOKIE["color"]; 

Das Ergebnis sieht im Browser dann erwartungsgemäß so aus:

Farbe: Bucky
Name: green

Anzahl der Cookies zählen

Da es sich bei $_COOKIE ja um ein Array handelt, lässt sich die Anzahl der Elemente wie gewohnt mit der Funktion count() zurückliefern:

echo count($_COOKIE); // z.B. 2 

Cookie-Wert ändern und Cookie löschen

Cookie-Wert ändern

Um den Wert eines Cookies zu ändern, muss das Cookie mit setCookie() einfach überschrieben werden.

Zur Demonstration dient ein kleines Programm: Bei einem Klick auf den Button, soll der Cookie-Wert auf 1 gesetzt werden:

<?php
// Cookies setzen
setcookie("x", 0, time() + (86400 * 7), "/");

// Cookie-Wert bei Button-Klick ändern
if(isset($_POST["changeValue"])){
    setcookie("x", 1, time() + (86400 * 7), "/");
// Refresh
header("Refresh:0");
}

// Cookie-Wert ausgeben
echo $_COOKIE["x"];

?>

<html><body>

<form action="test2.php" method="post">
    <input type="submit" name="changeValue" value="Wert ändern">
</form>

</body></html>                

Cookie löschen

Um einen Cookie zu löschen, überschreibst du ihn ebenfalls mit der setcookie()-Funktion und setzt das Auslaufdatum (expiration date) einfach in die Vergangenheit:

// Setze das Auslaufdatum eine Stunde in die Vergangenheit
setcookie("user", "", time() - 3600);       

Java lernen

text text

PHP Lernen

zur PHP

JavaScript lernen

move nove move

FALCONBYTE.NET

Handmade with 🖤️

© 2018-2023 Stefan E. Heller

Impressum | Datenschutz | Changelog

Falconbyte Youtube Falconbyte GitHub facebook programmieren lernen twitter programmieren lernen discord programmieren lernen