Cookies mit PHP verwenden

Unter Cookies versteht man einen begrenzten Speicherbereich innerhalb des Browsers, der vom Server gesetzt und ausgelesen werden kann. Mit Cookies kann man quasi benutzerbezogene Informationen ablegen und vom Client und Server aus benutzen. Cookies sind im Grunde standardisiert und eigentlich alle Browserorientierte Programmiersprachen können Cookies verwenden. PHP bietet die Methode setcookie() zum setzen und die Globale Variable $_COOKIE zum Auslesen an.

Wie man die Daten innerhalb des Cookies organisiert, kann man selbst bestimmen. Viele Entwickler gehen her und setzen die Daten innerhalb des Cookies mit einem Trennzeichen. Im Folgenden Beispiel, werden drei Informationen (Username, SessionID und Role) in einen Cookie gesetzt. Die Daten werden mit einem Semikolon getrennt abgelegt:

/*combine the values */
$value = $user.';'.$sessioID.';'.$role;
 
/* set the values in the cookie */
setcookie("name of the cookie", $value, time()+3600)

Jeder Cookie muss man mit einem Namen versorgen, man kann hier zum Beispiel den Namen der Domain nehmen. Zusätzlich sollte jeder Cookie eine Haltbarkeitsdatum erhalten. Damit man der Browser die gespeicherten Informationen auch wieder vergessen kann. Das mach Sinn, wenn man eine Benutzer-Session über Cookies steuert. Ihr habt das bestimmt schon bei Websiten gesehen, wo man sich anloggen muss. Viele bieten beim Einloggen eine Option an, eingeloggt zu bleiben. Eine solche Funktion wird im Regelfall über Cookies realisiert.

Um die Informationen aus dem oben gesetzten Cookie wieder auslesen möchte, muss man in PHP die Globale Variable $_COOKIE auswerten:

/*pull the data in local var*/
$s = $_COOKIE; 
 
/*explode the data into dedicated vars*/
@list($user, $sessionID, $role) = explode(";", $s);

Zu den bereits genannten Optionen für einen Cookie, kann man noch optional angeben, ob der Cookie über eine verschlüsselte Verbindung genutzt werden soll (secure) und zusätzlich kann man unterbinden, dass der Cookie von anderen Browsersprachen wie Javascript (httponly) genutzt weden kann.

Man sollte aber immer sehr genau nachdenken, welche Informationen man in einen Cookie setzt. Wenn man wichtige Informationen klarlesbar in einen Browser setzt, kann das im Grunde zu einer Sicherheitslücke führen. D.h. das obige Beispiel darf man so nicht in der Produktion verwenden. Da der Speicherplatz in einem Cookie begrenzt ist, sollte man sparsam damit umgehen.

Vergesst bitte auch nicht, dass jeder User im Browser die Verwendung von Cookies einschränken kann. D.h. es besteht das Risiko, dass einzelne User gar keine Cookies akzeptieren oder viel kurzfristiger als man es erwartet, vom Browser einfach gelöscht werden.

http://www.agile-coding.net/cookies-mit-php-verwenden/