Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Gültigkeitsdauer eines Cookies lässt sich nicht setzen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Gültigkeitsdauer eines Cookies lässt sich nicht setzen

    Hallo,

    nach 2 Stunden Bastelei drehe ich langsam am Rad:
    Ich möchte mit setcookie einen Cookie setzen, der auch über die Dauer der Sitzung hinaus gültig bleibt (wie lange ist hier erstmal egal).
    Ich habe also folgenden Code geschrieben:
    Code:
    setCookie($this->namespace."_".$param, $this->parameter[$param], time()+3600, "/");
    Das sollte eigentlich einen Cookie setzen, der genau eine Stunde gültig ist.
    Wenn ich die entsprechende Seite jedoch aufrufe und mir dann im Browser (ich benutze den FireFox 1.0.7) unter "Extras|Einstellungen|Datenschutz|Cookies" den entsprechenden Cookie anschaue, so wird er auch gesetzt.
    Name und Wert werden korrekt gesetzt und so lange die Session läuft, kann ich auch darauf zugreifen.
    Trotzdem wird der Cookie am Ende der Sitzung sofort wieder gelöscht: Unter "Gültig bis" wird immer "Am Ende der Sitzung" angegeben.
    Es kann also nicht daran liegen, dass der Cookie nicht mehr gesetzt werden kann, weil bereits ein Header gesendet wurde, denn innerhalb der Session kann ich ja auf den Wert zugreifen.
    Ich habe auch das Error-Reporting auf 'E_ALL' gesetzt und erhalte keine Fehler oder Warnungen.
    Im selben Projekt setze ich Cookies per JavaScript und das funktioniert wunderprächtig.
    Statt mit 'time()+3600' habe ich auch mal versucht, mit 'mktime(0, 0, 0, 1, 1, 2006)' das Ablaufdatum direkt zu setzen: ohne Erfolg.
    Ich habe schon das ganze Forum durchsucht und auch gegooglet: ohne Ergebnis.
    Entweder stehe ich total auf dem Schlauch und ich übersehe etwas Grundsätzliches oder irgendetwas funktioniert auf meinem Server nicht richtig.
    Hat irgendwer Ideen, woran es liegen könnte?

  • #2
    Ist Dein Firefox vielleicht so eingestellt, nur Sitzungscookies zuzulassen?

    Kommentar


    • #3
      Nö, als Einstellung habe ich "Cookies behalten: solange sie gültig sind". Und wie gesagt, bei den Cookies, die ich per JavaScript setze funktioniert es ja tadelos.

      Kommentar


      • #4
        http://livehttpheaders.mozdev.org/installation.html
        Die Version 0.10 habe ich gerade mit FF 1.0.7 getestet und es traten keine Fehler auf; funktionierte wie gewünscht.
        Damit bekommst Du bei "Seiteninformationen" einen neuen Reiter "Header".
        Was schickt Dein Server für einen Cookie-Header?

        Kommentar


        • #5
          Sorry, dass ich mich jetzt erst wieder melde, hatte die Woche ausser Haus zu tun...

          Als Header kriege ich folgendes:

          Code:
          http://kreta/~joachim/sit-watch/auft..._auftraege.php
          
          POST /~joachim/sit-watch/auftraege/liste_auftraege.php HTTP/1.1
          Host: kreta
          User-Agent: Mozilla/5.0 (Windows; U; Win98; de-DE; rv:1.7.12) Gecko/20050919 Firefox/1.0.7
          Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
          Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
          Accept-Encoding: gzip,deflate
          Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
          Keep-Alive: 300
          Connection: keep-alive
          Referer: http://kreta/~joachim/sit-watch/auft..._auftraege.php
          Cookie: liste_auftraege_quartal=4; liste_auftraege_jahr=2005; 49=1; 53=1; PHPSESSID=f5f7dcbfadbd6274956ac83160933b16
          Authorization: Basic am9hY2hpbTpqb2FjaGlt
          Content-Type: application/x-www-form-urlencoded
          Content-Length: 19
          quartal=2&jahr=2005
          HTTP/1.x 200 OK
          Date: Fri, 21 Oct 2005 05:58:58 GMT
          Server: Apache/2.0.48 (Linux/SuSE)
          Accept-Ranges: bytes
          X-Powered-By: PHP/4.3.1
          Expires: Thu, 19 Nov 1981 08:52:00 GMT
          Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
          Pragma: no-cache
          Set-Cookie: liste_auftraege_quartal=2; expires=Fri, 21-Oct-2005 07:58:58 GMT
          Set-Cookie: liste_auftraege_jahr=2005; expires=Fri, 21-Oct-2005 07:58:58 GMT
          Transfer-Encoding: chunked
          Content-Type: text/html; charset=ISO-8859-1
          ----------------------------------------------------------
          Interessant sind dabei die Cookies "liste_auftraege_quartal" und "liste_auftraege_jahr".
          Bei "expires" steht genau die Zeit des Aufrufes, obwohl ich im Skript eine Lebensdauer von 2 Stunden eingestellt habe.

          Kommentar


          • #6
            Ist die Einstellung der Uhr des Server vielleicht genau um diese Zeitspanne verschoben? (das wäre so eine hübsch einfache Lösung )

            Kommentar


            • #7
              Ich habe ja schon alle möglichen Zeitangaben ausprobiert: von wenigen Minuten bis zu einem Jahr und ich habe auch schon versucht, ein festes Datum vorzugeben, alles ohne Erfolg.

              Die Server-Zeit ist aber tatsächlich um eine Stunde verschoben.

              Übrigens noch mal Danke für den Tipp mit dem Tool, ich hatte mir bereits den "HeaderMonitor" installiert, das andere Tool ist aber besser...

              Kommentar


              • #8
                Ich habe die Seite mal von einem anderen Computer mit Mozilla 1.5 versucht, da funktioniert alles prima: der Cookie wird richtig gesetzt und wird auch beim Schließen des Browers nicht gelöscht.
                In meinem Firefox habe ich aber eingestellt, dass Cookies solange behalten werden sollen, wie sie gültig sind

                Also scheint es am Firefox zu liegen, aber so ein Problem müsste doch eigentlich bekannt sein?

                Kommentar


                • #9
                  Mir ist gerade noch eine Merkwürdigkeit aufgefallen:
                  Im Header wurde für "expires" folgende Datum übergeben:

                  Code:
                  Expires: Thu, 19 Nov 1981 08:52:00 GMT
                  Ich dachte mir, vielleicht könnte es ja daran liegen und deshalb habe ich in das HTML-Template folgende Meta-Zeile geschrieben:

                  Code:
                  <meta http-equiv="expires" content="Sun, 20 Nov 2005 11:22:15 CET" />
                  (Das Datum wird natürlich dynamisch mit date() erzeugt) - und was erhalte ich mit LiveHTTP? Natürlich wieder

                  Code:
                  Expires: Thu, 19 Nov 1981 08:52:00 GMT
                  ????????????

                  Der Server ist ja nicht der allerjüngste, aber sooooo alt ist er auch wieder nicht...

                  Kommentar

                  Lädt...
                  X