Hi,
Welchen Wert hat die Konstante COOKIE_NAME?
Wie du siehst ist COOKIE_NAME ('PREF') eine Konstante, ist also völlig irrelevant was diese enthält.
Ob das wirklich eine Konstante ist, oder nur schludriger Umgang mit der Syntax, wollte ich herausfinden.
if($widget->refreshContent()) {
if(setcookie(COOKIE_NAME, base64_encode(serialize($page)), getCookieExpDate(), '/')) echo "<h2>SUCCESS</h2>\n";
var_dump($widget->items);
$page = unserialize(base64_decode($_COOKIE[COOKIE_NAME]));
$widget = $page->getWidget($_POST['ID']);
echo "<br /><br />\n";
var_dump($widget->items);
}
>
> Der erste Aufruf von var\_dump($page); zeigt, dass die Daten innerhalb des Widget-Objektes erfolgreich aktualisiert wurden. Ich serialisiere das Page-Objekt, welches also definitiv das aktualisierte widget-Objekt enthält und schreibe es in das Cookie. Anschließend lese ich das Cookie, deserialisiere das Page-Objekt und der zweite Aufruf von var\_dump($page) zeigt, dass die aktualisierten Daten nicht enthalten sind. Daraus schließe ich, dass die Objekte korrekt funktionieren, nur das Cookie nicht geschrieben wurde.
Da schließt du falsch.
$\_COOKIE enthält die Cookie-Daten, die beim Aufruf des Scriptes über HTTP übermittelt wurden.
$\_COOKIE wird \*nicht\* aktualisiert dadurch, dass du mit setcookie einen neuen Cookie setzt. Diese Änderung macht sich in $\_COOKIE erst beim nächsten Scriptaufruf bemerkbar.
> Was allerdings auch nicht der Fall sein kann, da die Ausgabe von "<h2>SUCCSS</h2>" bei erfolgreichem Schreiben des Cookies erfolgt.
Der Rückgabewert von setcookie sagt absolut nichts darüber aus, ob der Cookie auch beim Client angekommen ist oder von diesem akzeptiert wurde.
Er sagt lediglich aus, dass das Hinzufügen eines neuen HTTP-Headers zum Response erst mal nicht fehlerhaft verlief.
> > Hast du clientseitig analysiert, welche Cookies betreffenden HTTP-Header ankommen?
>
> Bislang nur sporadisch per Firebug. Ich habe hier keine weitere Analyse unternommen, da das Ergebnis mit dem der serverseitigen Verarbeitung übereinstimmt.
Da deine Analyse bzw. Interpretation dieser aber bereits fehlerhaft war, solltest du noch mal ein bisschen genauer testen.
MfG ChrisB
--
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?