Antje Hofmann: Cookie mit dynamischen Namen

Beitrag lesen

Hallo Christian,

Also so, wie es auch auf der Website die Sebastian verlinkt hat, beschrieben wird http://www.worldzone.net/computers/kjkoruth/lesson8c.html?

Das habe ich probiert - es werden leider nur die Daten für einen Link gespeichert. Ich werde mich damit noch mal ausführlich beschäftigen, denn wahrscheinlich mache ich irgendwo einen Fehler.

es kommt natürlich auf die Größe der zuspeichernden Daten an. Der bequeme Weg könnte so gehen:

if (!isset($_COOKIE["TestCookie"])) {
 $value=array(1,2,3);
 setcookie ("TestCookie", serialize($value), time()+3600);

} else {
 $value=unserialize($_COOKIE["TestCookie"]);
 var_dump($value);
 }

serialize erzeugt aus einer Variablen einen speicherbaren String. Im Beispiel wird diese Zeichenkette a:3:{i:0;i:1;i:1;i:2;i:2;i:3;} im Cookie gespeichert. unserialize() erzeugt wieder eine Variable daraus.

Vorteil, du brauchst dich um nichts weiter kümmern und hast nur ein Cookie.

Nachteil: du brauchst mehr Zeichen, als wenn du mehrere Cookies setzt oder eine eigene serialize-Methode schreibst.

Beachte, mehr als 4 KB darf ein Cookie (konkret gesagt die Summe aller Cookies einer Domain) nicht groß sein. Das Beispiel erzeugt einen Cookieeintrag der so aussieht:

a%3A3%3A%7Bi%3A0%3Bi%3A1%3Bi%3A1%3Bi%3A2%3Bi%3A2%3Bi%3A3%3B%7D

Alle Sonderzeichen werden maskiert. Du musst also bei diesem Verfahren gegebenenfalls kontrollieren, wie groß die Zeichenkette wird.

Viele Grüße

Antje