Quakenet/#php Tutorial

Hinweis: Wenn sie diese Seite von einer externen URL aufgerufen haben achten sie darauf das alle Kapitel aufeinander aufbauen. Stellen sie daher sicher dass sie alle vorherigen Kapitel gelesen haben, da sie sonst relevante Informationen übersehen.

Cookies

  1. Was sind Cookies
  2. Erzeugen von Cookies
  3. Auslesen von Cookies
  4. Löschen eines Cookies
  5. Gefahren von Außen

1. Was sind Cookies

Als Cookies werden Textzeilen bezeichnet die der Browser zusätzlich zu einer Anfrage an den Server schickt. Diese Textzeilen sehen dabei wie Zuweisungen aus, ein Beispiel wäre UserID=10. Hierbei spricht man davon dass der Cookie UserID den Wert 10 hat. Des Weiteren haben Cookies ein Haltbarkeitsdatum, welches angibt wie lange ein Cookie beim Client gespeichert werden soll. Wenn kein Zeitpunkt zum Löschen angegeben wurde wird ein Cookie automatisch beim Beenden des Browsers gelöscht.

Jeder Browser entscheidet selbst anhand seiner Einstellungen wie und wie lange Cookies gespeichert werden und ob. Das Verhalten kann entsprechend auch nicht von einem PHP-Skript verändert werden. Wenn ein PHP-Skript ein Cookie zum Client sendet ist nicht sichergestellt dass dieser den Cookie auch wirklich speichert. Erst beim nächsten Aufruf eines Skriptes (neuladen, link folgen, url eingeben, etc.) kann überprüft werden ob der Client/Browser den Cookie gespeichert hat oder nicht, nämlich ob er den Cookie den er gespeichert hat zum Server gesendet hat oder nicht.

2. Erzeugen von Cookies

Cookies werden in PHP mit der Funktion setcookie erzeugt. Diese Funktion ergänzt dabei die Header-Angaben. Dies bedeutet das Cookies nur dann gesendet werden können wenn vorher keine Ausgabe vorhanden ist, wie z.B. echo oder HTML-Code. Der erste Parameter ist der Name des Cookies, der zweite Parameter ist der Wert.

<?php
setcookie
("UserID""10");
?>

So ein Cookie bleibt so lange beim Client gespeichert bis der Browser geschlossen wird. Wenn ein Cookie länger gespeichert bleiben soll muss der Zeitpunkt des löschens explizit angegeben werden.

<?php
setcookie
("UserID""10"time()+60*60*24); // 1 Tag
setcookie("Foo""Bar"time()+60); // 1 Minute
?>

3. Auslesen von Cookies

Cookies die der Client zum Browser schickt werden im Array $_COOKIE gespeichert. Der Schlüssel ist der Name vom Cookie und der Wert des Arrayelements ist der Wert des Cookies. Aus der Cookie-Zeile UserID=5 wird somit $_COOKIE['UserID'] = '5'. Die Werte sind dabei entweder Strings oder Arrays.

<?php
// bei einem Cookie "Foo=Bar"
var_dump($_COOKIE['Foo']); // gibt string(3) "Bar" aus

// bei folgenden Cookies:
// "Bla[]=10"
// "Bla[]=x"
var_dump($_COOKIE['Bla']);
// Ausgabe ist:
// array(2) {
//   [0] =>
//   string(2) "10"
//   [1] =>
//   string(1) "x"
// }
?>

Cookies können nur ausgelesen werden wenn der Browser diese sendet. Dies bedeutet auch dass ein Cookie nicht direkt im Array $_COOKIE vorhanden ist, nachdem die setcookie-Funktion aufgerufen wurde.

<?php
setcookie
("Name""Wert");
echo 
$_COOKIE['Name']; // wird nicht klappen (es sei denn ein solcher Cookie wurde bereits vom Client gesendet)
?>

Ein setcookie-Aufruf sendet die Anforderung an dem Client ein Cookie zu speichern, daher kann das $_COOKIE-Array nicht direkt mit diesem Cookie gefüllt sein. Dafür müsste der Browser eine Zeitreise machen und seine Anfrage zum Server ändern damit auch dieser Cookie mitgesendet wird.

Um zu gucken ob überhaupt ein Cookie gesendet wurde kann die Funktion isset verwendet werden. Erst nach der Überprüfung sollte auf ein Cookiewert zugegriffen werden um Fehlermeldungen zu vermeiden.

4. Löschen eines Cookies

In PHP gibt es keine spezielle Funktion um ein Cookie zu löschen, daher wird für diesen Zweck auch die Funktion setcookie verwendet. Damit ein Cookie gelöscht wird setzt man das Haltbarkeitsdatum auf einen Punkt in der Vergangenheit. Sicherheitshalber sollte man den Wert selbst auf einen ungültigen Wert setzen, wie z.B. ein leerer String.

<?php
setcookie
("Name"""time()-60*60*24);
?>

5. Gefahren von Außen

Da Cookies beim Client gespeichert sind und somit außerhalb der Gewalt der PHP-Skripte liegen darf solchen Werten nicht vertraut werden. Ein Cookie login=1 sollte daher z.B. nicht reichen in ein gesichertes System zu kommen. Des Weiteren sollte nicht auf gültige Werte vertraut werden. Ein Wert der z.B. eine Zahl sein sollte muss auch darauf geprüft werden.

Fragen zum Kapitel

Keine Fragen zum Kapitel vorhanden

Zurück zu Weiter zu
Copyright © bei den OPs von #php.de/QuakeNet Valid XHTML 1.0 Strict Valid CSS!