ChrisB: Cookies werden nicht korrekt gesetzt

Beitrag lesen

Hi,

if(!isset($_COOKIE[COOKIE_NAME]) && empty($_COOKIE[COOKIE_NAME])) {

Was versprichst du dir von dieser Abfrage?

Welchen Wert hat die Konstante COOKIE_NAME?

     if($widget->refreshContent()) {  
  setCookie(COOKIE_NAME, '', time()-42000, '/');  
  setcookie(COOKIE_NAME, base64_encode(serialize($page)), getCookieExpDate(), '/');  

$widget->showContent(1);
     } else {
$widget->showContent(1);
     }

  

> Genau hier liegt das Problem. Das 'alte' Cookie, welches aus der vorhergehenden Seite stammt, soll gelöscht, bzw. überschrieben werden.  
  
Warum versuchst du den Cookie überhaupt zu löschen, wenn du ihn doch anschließend gleich mit neuem Wert wieder zu setzen versuchst?  
Warum setzt du nicht gleich nur den neuen Wert?  
  
Und warum notierst du den Aufruf von showContent redundant im if- und im else-Zweig - anstatt bedingungsunabhängig \*nach\* der Abfrage?  
  

> Dies ist notwendig, da auf $widget refreshContent() angewendet wurde, die Inhalte dieses Widgets also aktualisiert wurden.  
  
Und was macht diese Methode, was für einen Rückgabewert liefert sie?  
  

> Führe ich den Code in dieser Form aus, existiert nach dem refreshContent() kein Cookie. D.h. das Cookie wird gelöscht, das neue aber nicht geschrieben. Wende ich setcookie an, ohne das Cookie vorher zu löschen, steht im Nachhinein das alte Cookie geschrieben, d.h. es wird nicht aktualisiert.  
  
Hast du clientseitig analysiert, welche Cookies betreffenden HTTP-Header ankommen?  
  
Beobachtest du das Problem nur in einem bestimmten Testbrowser, oder übergreifen?  
Hast du die Nutzerkommentare im Manual zu setcookie durchgeschaut, welche Fallstricke es ggf. zu beachten gilt?  
  

> Findet ihr ein Problem in diesem Code?  
  
Einige, aber weniger mit direktem Bezug auf das Problem.  
  
MfG ChrisB  
  

-- 
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?