Zum Skriptum
Skriptum 04

Übungsbeispiele

PHP Cookies – Hands-on

Was du in dieser Aufgabe uebst

setcookie() verwenden

Du setzt und liest Cookies auf dem Client

Ablaufzeiten setzen

Du bestimmst, wie lange Cookies gespeichert bleiben

Persistente Speicherung

Du verstehst, wie Cookies ueber Seitenaufrufe hinweg bestehen bleiben

Hinweis zur Bearbeitung

Erstelle für jede Aufgabe eine eigene .php-Datei in deinem lokalen XAMPP-Ordner (htdocs/). Öffne sie im Browser über http://localhost/deineDatei.php. Benutze den Button „Lösung anzeigen" nur zur Kontrolle nach eigenem Versuch.

Aufgabe 1

Einen Cookie setzen

Einfach

Erstelle eine PHP-Datei aufgabe1.php, die:

  1. Einen Cookie mit dem Namen lieblingsfarbe und dem Wert blau setzt.
  2. Die Haltbarkeit des Cookies auf 7 Tage setzt (7 × 24 × 60 × 60 Sekunden).
  3. Danach eine HTML-Seite ausgibt, die meldet: „Cookie wurde gesetzt!"
Tipp: Denk an die goldene Regel: setcookie() muss vor jeglicher HTML-Ausgabe stehen!
<?php
// setcookie() MUSS vor jeglichem HTML stehen!
$ablaufzeit = time() + (7 * 24 * 60 * 60); // 7 Tage
setcookie("lieblingsfarbe", "blau", $ablaufzeit);
?>
<!DOCTYPE html>
<html><body>
    <p>Cookie wurde gesetzt!</p>
</body></html>
Aufgabe 2

Cookie auslesen

Einfach

Erstelle eine Datei aufgabe2.php, die den Cookie aus Aufgabe 1 ausliest und folgendes anzeigt:

  • Falls der Cookie existiert: „Deine Lieblingsfarbe ist: blau"
  • Falls der Cookie nicht existiert: „Kein Cookie gefunden. Bitte zuerst aufgabe1.php aufrufen."
Tipp: Nutze isset() um zu prüfen, ob ein Cookie existiert, bevor du ihn ausgibst. Vergiss htmlspecialchars() nicht!
<?php
if (isset($_COOKIE['lieblingsfarbe'])) {
    $farbe = htmlspecialchars($_COOKIE['lieblingsfarbe']);
    echo "Deine Lieblingsfarbe ist: " . $farbe;
} else {
    echo "Kein Cookie gefunden. Bitte zuerst aufgabe1.php aufrufen.";
}
?>
Aufgabe 3

Cookie löschen

Mittel

Erstelle eine Datei aufgabe3.php, die den Cookie lieblingsfarbe aus Aufgabe 1 löscht.

  • Nach dem Löschen soll die Seite ausgeben: „Cookie wurde gelöscht!"
  • Teste anschließend, ob aufgabe2.php den Cookie wirklich nicht mehr findet.
Tipp: Ein Cookie wird gelöscht, indem man ihn erneut setzt – aber mit einer Ablaufzeit in der Vergangenheit (time() - 1).
<?php
// Ablaufzeit in der Vergangenheit → Browser löscht den Cookie sofort
setcookie("lieblingsfarbe", "", time() - 1);
?>
<!DOCTYPE html>
<html><body>
    <p>Cookie wurde gelöscht!</p>
</body></html>
Aufgabe 4

Besuchszähler mit Cookie

Herausforderung

Erstelle eine Datei zaehler.php, die zählt, wie oft ein Benutzer die Seite besucht hat – und diese Zahl in einem Cookie speichert.

  • Beim ersten Besuch: Setze einen Cookie besuche mit dem Wert 1.
  • Bei jedem weiteren Besuch: Erhöhe den Wert um 1 und speichere ihn neu.
  • Zeige auf der Seite an: „Du hast diese Seite schon X Mal besucht."
  • Haltbarkeit: 30 Tage.
Denkanstöße: Wie prüfst du, ob der Cookie schon existiert? Wie liest du den alten Wert aus und erhöhst ihn? Was musst du beim Ausgeben des Wertes beachten (Sicherheit)?
<?php
// Schritt 1: Aktuellen Zählerstand lesen (oder 0 wenn kein Cookie)
$besuche = isset($_COOKIE['besuche']) ? (int)$_COOKIE['besuche'] : 0;

// Schritt 2: Zähler erhöhen
$besuche++;

// Schritt 3: Aktualisierten Wert für 30 Tage speichern
$ablaufzeit = time() + (30 * 24 * 60 * 60);
setcookie("besuche", $besuche, $ablaufzeit);
?>
<!DOCTYPE html>
<html><body>
    <p>
        <?php
        // (int)-Cast schützt vor böswätigen Werten im Cookie
        echo "Du hast diese Seite schon " . $besuche . " Mal besucht.";
        ?>
    </p>
</body></html>

Der (int)-Cast beim Auslesen ist wichtig: Ein Cookie kann vom User manipuliert werden. Durch den Cast wird sichergestellt, dass der Wert immer eine Zahl ist – kein eingeschleuster Text.

Dynamische Webseiten 2 | eduhigh.net | Seminarunterlagen