Websiteentwicklung: PHP: Cookies

Aus Wikibooks

Wechseln zu: Navigation, Suche
Websiteentwicklung PHPBild:Wikibooks buchseite.svg Cookies


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.

[Bearbeiten] Cookies mit PHP

In PHP setzt man Cookies mit der Funktion setcookie(), dies muss zwingend im Header Bereich geschehen. Um dies zutun muss die Funktion setcookie() vor jeder echo() oder print() Ausgabe erfolgen, dies gilt auch für Sitzungscookies.

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, dass Cookie nur bestimmten Unterverzeichnissen zur Verfügung zu stellen. Standartmäßig ist für $cookiepfad der Wert des Verzeichnisses eingesetzt, dass das Cookie gesetzt hat. Der Wert '/' macht das Cookie für alle Verzeichnisse und Unterverzeichnisse verfügbar, wenn zum Beispiel der Wert '/foo/' gesetzt wird, kann nur das 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 er auf TRUE gesetzt, steht das Cookie nur bei über sicherer HTTPS-Verbindungen zur Verfügung.

Dazu 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 Variablenü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 ".$_COOKIE["name"].", Du siehst, ich habe deinen Namen nicht vergessen!";
 }
?>

[Bearbeiten] Sitzungscookies

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");

[Bearbeiten] Cookies per Skript löschen

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

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


Zurück zu Mails | Hoch zu PHP | Vor zu LDAP
Persönliche Werkzeuge
Buch erstellen
  • Artikel hinzufügen
  • Hilfe zu Sammlungen