Websiteentwicklung: PHP: Cookies

Aus Wikibooks

Cookies sind kleine Textdateien, die auf dem Computer des Benutzers gespeichert werden. Mithilfe eines Cookies können beispielsweise die Zugangsdaten eines Nutzers auf seinem Rechner hinterlegt werden. Bei einem erneuten Aufruf der Seite, werden diese dann aus dem Cookie gelesen - und der Nutzer so "wieder erkannt".


Man sollte hin und wieder dieses Cookies löschen, und von fremden Seiten sollte man das Annehmen von Cookies gänzlich verweigern. Denn da durch kann man zurückverfolgen, auf welchen Seiten man war. Vor allem in Internetcafés muss das beachtet werden.

Cookies mit PHP[Bearbeiten]

In PHP setzt man Cookies mit der Funktion setcookie(). Dies muss zwingend im Header-Bereich geschehen. Deshalb muss die Funktion setcookie() vor jeder echo()- oder print()-Ausgabe erfolgen. Dies gilt auch für Sitzungscookies. Syntax von setcookie():

setcookie($cookiename [,$cookiewert [,$verfallszeitpunkt [,$cookiepfad [,$domain [, $sicherheit]]]]);

Der $cookiewert wird unter dem Namen $cookiename auf dem PC des Benutzers abgespeichert. Die Information wird solange gespeichert, bis das Skript oder der Benutzer das Cookie löscht oder der $verfallszeitpunkt erreicht ist.

Der Verfallszeitpunkt wird in Sekunden seit dem 1. Januar 1970 (Beginn der UNIX-Epoche) angegeben. Mit der Funktion time() kann man die aktuelle Anzahl der Sekunden seit dem 1. Januar 1970 aufrufen.

Der Cookiepfad dient dazu, das Cookie nur bestimmten Unterverzeichnissen zur Verfügung zu stellen. Standardmäßig ist für $cookiepfad der Wert des Verzeichnisses eingesetzt, den das Cookie gesetzt hat. Der Wert '/' macht das Cookie für alle Verzeichnisse und Unterverzeichnisse verfügbar. Wenn aber zum Beispiel der Wert '/foo/' eingesetzt wird, ist der Cookie nur im Verzeichnis 'foo' und dessen Unterverzeichnissen verfügbar.

Mit der Angabe von $domain kann das Cookie bestimmten Unterdomains zugeordnet werden.

$sicherheit steht normalerweise auf FALSE. Wird TRUE angegeben, steht das Cookie nur bei [HTTPS]-Verbindungen zur Verfügung.

Zu Cookies ein kleines Beispiel:

<html>
 <body>
  <form action="cookie2.php" method="POST">
   Bitte gib deinen Namen ein:
   <input type="Text" name="name">
   <input type="Submit" value="Weiter">
  </form>
 </body>
</html>

Dies ist ein kleines Formular mit einem Eingabefeld, in das der Name des Users eingegeben werden soll. Der Name wird dann durch einen Klick auf den Button "Weiter" an die Datei "cookie2.php" gesandt. (siehe dazu auch Datenübergabe)

Hier die Datei "cookie2.php":

<?php
 if(isset($_POST["name"]) && ! empty($_POST["name"]))
 {
     setCookie("name",$_POST["name"],time()+2592000);
 }
?>

In der ersten Zeile wird überprüft, ob eine Variable "name" an das Skript geschickt wurde. Dann wird ein Cookie mit dem Namen "name" gesetzt. In diesem Cookie wird der Name gespeichert, den der User zuvor im Formular eingegeben hat. Dieses Cookie bleibt 2592000 Sekunden erhalten. (Das entspricht in etwa einem Monat)

Mit dem folgenden Skript kann man den Inhalt des Cookies wieder ausgeben:

<?php
 if(isset($_COOKIE["name"]))
 {
     echo "Hallo ".htmlspecialchars($_COOKIE["name"]).", Du siehst, ich habe deinen Namen nicht vergessen!";
 }
?>

Sitzungscookies[Bearbeiten]

Sitzungscookies verfallen automatisch, wenn der Browser geschlossen wird. Um solche Cookies zu erstellen, lasse einfach den Wert für den Verfallszeitpunkt weg:

 setCookie("name","Klaus");

Cookies per Skript löschen[Bearbeiten]

Cookies können gelöscht werden, indem einfach ein negativer Wert als Verfallszeitpunkt angegeben wird:

 setCookie("name","",-3600);