Cookies bieten die Möglichkeit, nutzerspezifische Daten am Rechner des Benutzers zu speichern. (Im Gegensatz zu Sessions, die am Webserver gespeichert werden.) Dabei können auch Cookies und Sessions gemeinsam verwendet werden, wie z.B. im folgenden Beispiel.
Verwendung von Cookies für ein Loginsystem, um eine Session nach dem schließen des Browsers wiederaufnehmen zu können.
<?php //Dieser Teil muss direkt am Anfang der Seite stehen, weil die Funktionen session_start() und setcookie() vor jeder Ausgabe im Browser aufgerufen werden müssen if (isset($_COOKIE["session"])) { session_id($_COOKIE["session"]); //Die Session-ID wird auf den Wert der ID, die im Cookie gespeichert ist, geändert. Dies muss gemacht werden, bevor session_start() aufgerufen wird! } session_start(); if (isset($_POST["user"]) && isset($_POST["password"])) { $_SESSION["user"] = htmlspecialchars($_POST["user"]); $_SESSION["password"] = htmlspecialchars($_POST["password"]); setcookie("session", session_id(), time()+172800); //Setzen des Cookies mit der Session-ID, Gültigkeit: Aktuelle Zeit + 2 Tage } if ($_GET["do"]=="logout") { session_destroy(); setcookie("session", "", 1); //Setzen eines Cookies der keinen Inhalt hat und sich sofort wieder löscht (Es gibt keine Cookie-Lösch-Funktion) } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <meta http-equiv="content-language" content="de" /> <meta name="author" content="Dominik Prüller" /> <title>Passwortabfrage mit Cookies</title> </head> <body> <h1>Passwortabfrage mit Cookies</h1> <?php if (isset($_SESSION["user"]) && isset($_SESSION["password"]) && $_GET["do"] != "logout") { if ($_SESSION["user"] == "user" && $_SESSION["password"] == "schule") { echo "<p>Login erfolgreich.</p>"; echo "<a href='./passwortabfrage_cookies.php?do=logout'>Logout</a>"; } else { echo "<p>Login fehlgeschlagen.</p>"; session_destroy(); } } else { ?> <form action="passwortabfrage_cookies.php" method="post"> <fieldset> <legend>Loginformular</legend> <label for="user">Benutzername: </label><input type="text" name="user" id="user" size="20" /><br /> <label for="password">Passwort: </label><input type="password" name="password" id="password" size="20" /><br /> <input type="submit" value="Daten absenden" /> </fieldset> </form> <?php } ?> </body> </html>