yubb.de-Logo
Tutorials
yubb@yubb
yubbService
Inside yubb

Professioneller Umgang mit Cookies



Zu Beginn des Tutorials sollte man sich als Erstes mit den Cookies vertraut machen. Am Besten nutzt man dazu die Ressourcen dieser Seite, LLCoolDannY hat ein Tutorial zu Cookies geschrieben.
Wenn man besagtes Tutorial gelesen hat, weiß man, dass man beliebig viele Cookies setzen kann. Allerdings wird das mit der Zeit sehr, sehr unübersichtlich.
Wenn man mit Arrays in Cookies Arbeitet wird das auch sehr unübersichtlich, wenn wir uns folgendes Beispiel anschauen:
PHP-Datei:
1
2
3
4
<?php
setcookie
("userdata['name']""Dagobert Duck");
echo 
$_COOKIE['userdata']['name'];
?>


In diesem Fall habe ich ein Cookie gesetzt, das Bestandteil des Arrays userdata ist, mit dem Schlüssel name und dem Wert Dagobert Duck. Allerdings müssen wir auf Dauer so mit Arrays arbeiten, was nicht wirklich Spaß macht.
Eine interessante Funktion, auf die ich auch gerne zurückgreife, ist deshalb import_request_variables(), deren Syntax folgendermaßen aussieht:
import_request_variables ( string types [, string prefix]).

Diese Funktion dient dazu, aus den Umgebungsvariablen $_POST, $_GET und $_COOKIE eine Variable mit dem entsprechendem Schlüssel und dem Präfix string prefix. Obwohl der Parameter prefix optional ist, darf dieser nicht gleich null bzw. leer sein. Ist dies der Fall bekommt man eine Fehlermeldung. Der erste Parameter muss ein String sein, p für $_POST, g für $_GET oder c für $_COOKIE. Die Groß- und Kleinschreibung spielt hierbei keine Rolle. Es sei zudem gesagt, dass man auch kombinieren kann, man kann so z.B. gepostete Daten und Cookies mit ein und dem selben Präfix versehen. Im konkreten Fall wollen wir uns aber nur auf die Cookies beschränken.

PHP-Datei:
1
2
3
4
5
6
7
8
9
<?php
setcookie
("userdata['name']""Dagobert Duck");
setcookie("userdata['alter']"60);
setcookie("userdata['email']""dagobert@entenhausen.de");

import_request_variables("c""tut");

echo 
$tutuserdata['name']; //gibt Dagobert Duck aus
?>


Wie man in diesem Beispiel ganz klar erkennen kann, habe ich aus dem Array eine Variable gemacht, bestehend aus dem bei import_request_variables angegeben Präfix (tut) und dem Name des Cookies (userdata). So kann ich in meiner gesamten Anwendung immer $tutuserdata['key'] benutzen anstatt $_COOKIE['userdata']['key']!

Zum Umgang mit Arrays und Cookies sollte man ggf. noch das PHP Manual studieren, dort ist die Anwendung von Arrays auf Cookies meines Erachtens sehr gut beschrieben.

Geschrieben von michi am 18.06.2004 (7214x gelesen)
weiterempfehlen weiterempfehlen   Druckversion Druckversion   kommentieren kommentieren

Irgendwie ein bisschen unnötig...



Aber gut erklärt.

mfG, LCD

Geschrieben von LLCoolDannY
Im zweiten Code ist ein Tippfehler in Zeile 6:

import_requesT_variables("c", "tut");
Geschrieben von Dominik Kopp
Danke Dominik :)
Geschrieben von Phil Marx
Das ist doch völlig unnötig 3 Cookies zu machen...

setcookie("cookie_name", "". $name ."|||". $alter ."|||". $email ."");

und dann mit explode wieder auslesen... damit erspart man sich schonmal die anderen beiden Cookies...
und das auslesen kann man auch als Funktion schreiben. ;)
Geschrieben von Pi11e