Browser: Plätzchen verloren auf Refresh

8

Ich habe ein merkwürdiges Verhalten meiner Anwendung im Chrome-Browser (kein Problem mit anderen Browsern). Wenn ich eine Seite aktualisiere, wird der Cookie korrekt gesendet, aber bei einigen Aktualisierungen scheint der Browser den Cookie nicht zu übergeben.

So setze ich meinen Cookie:

%Vor%

Dies ist, was ich für Seitenköpfe verwende:

%Vor%

Sehen Sie hier ein Problem, das die Handhabung von Cookies beeinträchtigen könnte? Danke für jeden Vorschlag.

EDIT-01:

Es scheint, dass der Cookie nicht mit einigen Anfragen gesendet wird. Dies geschieht zeitweise und ich sehe dieses Verhalten jetzt für ALLE die Browser. Ist jemand auf eine solche Situation gestoßen? Gibt es eine Situation, in der ein Cookie nicht mit der Anfrage gesendet wird?

EDIT-02:

Hier sind die HTTP-Header:

%Vor%

REQUEST HEADERS

%Vor%

REAKTIONSKOPFZEILE

%Vor%

Nochmals vielen Dank für jede Richtlinie.

    
Nirmal 29.03.2010, 02:20
quelle

5 Antworten

3

Das Einzige, was mir einfällt, nachdem ich Ihre Header-Informationen gesehen habe, ist, dass PHP etwas ausgibt, bevor Sie den Cookie gesetzt haben. Wenn das der Fall ist, sollte setcookie false zurückgeben und Sie erhalten eine Warnung "Session-Cookie nicht senden - Header bereits gesendet" Wie Bart S. empfiehlt, error_reporting(E_ALL) einschalten und versuchen, den Rückgabewert von setcookie auszugeben, um dies zu überprüfen 't der Fall.

Versuchen Sie auch, einfach setcookie im Basisfall nur mit einem Namen und einem Wert zu verwenden und überprüfen Sie die Antwortheader erneut. Dann schneiden Sie Ihren gesamten Code außer dem Setcookie aus und wenn das funktioniert, bringen Sie Ihren ganzen Code mit divide and conquer zurück:)

    
James Wheare 06.04.2010, 17:38
quelle
4

Eine Frage, ein Vorschlag -

Frage - warum machst du das number_format (...) über die time (), da eine time () + 43200 ausreichen sollte.

Vorschlag - Haben Sie sich die Uhren zwischen dem Client und dem Server angeschaut? Da Sie nur einen 12-Stunden-Unterschied zwischen den beiden geben, wenn Sie einen großen Zeitversatz oder eine Unstimmigkeit haben, wenn GMT zwischen den beiden Rechnern liegt, könnten Sie feststellen, dass Sie einen Cookie senden, der in dem sehr wahrscheinlich abgelaufen ist nahe Zukunft.

    
koblas 31.03.2010 15:11
quelle
1

Ich habe ein ähnliches Problem wie zuvor gesehen. Ich würde überprüfen, ob der Pfad korrekt ist.

Ich könnte mir vorstellen, dass sich ein www.domain.com von domain.com unterscheidet, wie auch www.domain.com/ (mit einem Schrägstrich)

Überprüfen Sie darüber hinaus, ob PHP Zugriff auf die Schreibvorgänge seiner Sessions mit den richtigen Schreibberechtigungen hat (es ist ein anderes Verzeichnis, abhängig von Distro, aber phpinfo() sollte Ihnen mitteilen, welches Verzeichnis es zu verwenden versucht.)

Ich bin auf diese beiden schon einmal gestoßen. Der erste gibt keinen Fehler und scheint das zu simulieren, was Sie gerade erleben, der zweite gibt einen Dateischreibzugriffsfehler von irgendeiner Art, aber wenn Fehler nicht angezeigt werden, sehen Sie das möglicherweise nicht.

    
Garrett Bluma 02.04.2010 08:02
quelle
1

Wird Ihre Anwendung über das http-Protokoll oder file: //?

bereitgestellt?

Chrome speichert keine Cookies mit lokalen Apps, und das ist beabsichtigt. Sie können dieses Verhalten mit dem Befehlszeilenschalter ändern:

- Datei-Cookies aktivieren

    
Bambax 03.04.2010 09:03
quelle
1

Die Art und Weise, wie Sie mit Ihren Cookies umgehen, ist völlig in Ordnung, alles scheint in Ihrem Code in Ordnung zu sein, das Problem scheint bei Chrome zu liegen.

Obwohl sich Chrome-Problem Nr. 3014 hauptsächlich mit ein Java-Applet, es scheint, dass Sie das erleben.

    
Anthony Forloney 29.03.2010 02:30
quelle

Tags und Links