Andreas-Lindig: Nochmal: warum setzt Mozilla ein bestehendes Cookie immer neu?

Hallo Forum,

PHP setzt in meinem Projekt ein Session-Cookie. Aber leider nicht nur am Anfang der Session, sondern mit jedem Seitenaufruf neu und zwar für _jeden_ Frame einzeln. Wenn einer sich die Cookies melden läßt hat meine Seite verloren - da hat keiner Bock drauf, nur abgebrühte ebay-Surfer ;).

Wie kommt das? Es passiert nur im Mozilla.

Gruß, Andreas

--
<img src="http://was-ist-das.andreas-lindig.de/was_ist_das_fetzen.jpg" border="0" alt="">
http://was-ist-das.andreas-lindig.de
  1. Moin!

    PHP setzt in meinem Projekt ein Session-Cookie. Aber leider nicht nur am Anfang der Session, sondern mit jedem Seitenaufruf neu und zwar für _jeden_ Frame einzeln.

    ...

    Wie kommt das? Es passiert nur im Mozilla.

    Das ist falsch. Nur der Mozilla meldet es jedesmal. Die anderen von Dir getesteten Browser akzeptieren das einmal gesetzte Cookie danach offenbar stillschweigend.
    Den Rest kannst Du der Dokumentation zu session entnehmen.

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
    1. Moin!

      Äh... Tip:

      Programmiere doch die Session- Funktionalitäten spaßeshalber per Hand nach. Dann weisst Du, was die machen. Ich zum Bleistift verwende die eingebauten session- Funktionen nicht...

      MFFG (Mit freundlich- friedfertigem Grinsen)

      fastix®

      --
      Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
      1. Hallo Fastix®,

        Den Rest kannst Du der Dokumentation zu session entnehmen.

        da habe ich nichts zu diesem Thema gefunden.

        Programmiere doch die Session- Funktionalitäten spaßeshalber per Hand nach. Dann weisst Du, was die machen.

        Ich weiß nur das was in meinem Buch steht. Und das steht, daß bei session_start() überprüft wird, ob vom Browser ein entsprechendes Cookie geschickt wurde und ob eine Session mit dieser Nummer existiert. Wenn ja, werden die Daten ausgelesen, sonst wird eine Session angelegt und das Cookie geschickt. Wozu ist es gut das gleiche Cookie immer wieder zu schicken?

        Ich zum Bleistift verwende die eingebauten session- Funktionen nicht...

        ...und warum nicht?

        Gruß, Andreas

        --
        <img src="http://was-ist-das.andreas-lindig.de/was_ist_das_fetzen.jpg" border="0" alt="">
        http://was-ist-das.andreas-lindig.de
        1. hi,

          Ich weiß nur das was in meinem Buch steht. Und das steht, daß bei session_start() überprüft wird, ob vom Browser ein entsprechendes Cookie geschickt wurde und ob eine Session mit dieser Nummer existiert. Wenn ja, werden die Daten ausgelesen, sonst wird eine Session angelegt und das Cookie geschickt. Wozu ist es gut das gleiche Cookie immer wieder zu schicken?

          du hast also ein frameset.
          dort werden mehrere ressourcen referenziert, die der browser nach dem auswerten des HTML-codes der frame-seite nahezu zeitgleich vom server anfordern dürfte.

          er fordert also die seite in frame 1 an, es existiert noch kein cookie, dass er mitschicken könnte, also wird durch session_start() eine neue session gestartet.

          nahezu zeitgleich fordert er die seite aus frame 2 an - da dich die rückgabe des servers auf den ersten request noch gar nicht erreicht hat, gibt es immer noch kein cookie zum mitschicken.

          usw usf.

          gruss,
          wahsaga

          1. Moin!

            nahezu zeitgleich fordert er die seite aus frame 2 an - da dich die rückgabe des servers auf den ersten request noch gar nicht erreicht hat, gibt es immer noch kein cookie zum mitschicken.

            *kopfklatsch*

            Ja... daran hatte ich jetzt gar nicht gedacht. Muß wohl daran liegen, daß ich Frames und Sessions noch nicht gleichzeitig verwendet habe...

            MFFG (Mit freundlich- friedfertigem Grinsen)

            fastix®

            --
            Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
          2. Hallo wahsaga,
            hab gestern mal Deine Seite empfohlen, aber die ist leider nicht da :)

            er fordert also die seite in frame 1 an, es existiert noch kein cookie, dass er mitschicken könnte, also wird durch session_start() eine neue session gestartet.

            nahezu zeitgleich fordert er die seite aus frame 2 an - da dich die rückgabe des servers auf den ersten request noch gar nicht erreicht hat, gibt es immer noch kein cookie zum mitschicken.

            das würde mir ja beim ersten Aufruf einleuchten, aber das Cookie ist doch irgendwann da. Und bei jedem Klick (ich lade auch Unterframesets - bitte nicht kommentieren) geht das Spiel von vorne los, dabei wird ja immer nur wieder das gleiche Cookie (also mit der gleichen Session-ID) gesetzt. Mozilla meldet dann: der Server will ein bestehendes Cookie ändern. Und das Cookie ist auf den einzelnen Seiten auch bekannt, das habe ich mal ausgegeben.

            Gruß, Andreas

            --
            <img src="http://was-ist-das.andreas-lindig.de/was_ist_das_fetzen.jpg" border="0" alt="">
            http://was-ist-das.andreas-lindig.de
        2. Moin!

          Wozu ist es gut das gleiche Cookie immer wieder zu schicken?

          Ganz einfach: es gibt im Prinzip zwei Möglichkeiten, die Dauer einer Session bestimmen:

          [1] "Absolut": Die Session wird genau einmal gestartet und ist einen relativ langen Zeitraum gültig. Bei dieser Form wird das Cookie einmal gesetzt danach nur noch gelesen.

          [2] "Relativ": Die Session wird bei jeder Aktion (Seitenabruf) verlängert. Vorteil: die Session kann kürzer gültig sein, ohne das sich die Bequemlichkeit für den Benutzer verschlechtert. Bei dieser Form wird bei jeder Interaktion das Cookie neu geschrieben- was Deinen Mozilla offenbar zur Warnung veranlasst.

          Variante 2 ist etwas aufwendiger, dafür aber sicherer (Wegen der kürzeren Gültigkeit).

          Du kannst das sicher irgendwo konfigurieren. Da ich die vorgefertigten Session- Funktionen nicht benutze, sondern lieber selbst die Kontrolle behalte, und alles "zu Fuß" programmiere, kenne ich die zu setzenden Parameter auch nicht und müsste ebenso wie Du nachschauen. Wer will mag darüber meckern, ich meine dafür Gründe zu haben: warum soll ich Funktionen einsetzen die ich nicht bis in Ihren tiefsten Keller verstehe- oder hier genauer: kenne. Wenn ich die sessions selber programmiere, dann kenne ich deren Funktionen schließlich auch - und gerade bei sessions ist mir das fürchterlich wichtig.

          MFFG (Mit freundlich- friedfertigem Grinsen)

          fastix®

          --
          Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
          1. [1] "Absolut": Die Session wird genau einmal gestartet und ist einen relativ langen Zeitraum gültig. Bei dieser Form wird das Cookie einmal gesetzt danach nur noch gelesen.
            [2] "Relativ": Die Session wird bei jeder Aktion (Seitenabruf) verlängert.

            aber bei Variante 2 bräuchte man das Cookie doch auch nur noch zu lesen. Die gültigkeit der Session-Datei kann man doch auf dem Server erledigen. oder?

            Gruß, Andreas

            --
            <img src="http://was-ist-das.andreas-lindig.de/was_ist_das_fetzen.jpg" border="0" alt="">
            http://was-ist-das.andreas-lindig.de
            1. Moin!

              aber bei Variante 2 bräuchte man das Cookie doch auch nur noch zu lesen. Die gültigkeit der Session-Datei kann man doch auf dem Server erledigen. oder?

              Soviel ich weiss setzt der Server das Cookie so, daß es auch nicht länger lebt als die Sitzung. Die Lebensdauer muss also neu geschrieben werden. Das bedeutet meines Wissens das gesamte Cookie.

              MFFG (Mit freundlich- friedfertigem Grinsen)

              fastix®

              --
              Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
              1. hi,

                Soviel ich weiss setzt der Server das Cookie so, daß es auch nicht länger lebt als die Sitzung.
                Die Lebensdauer muss also neu geschrieben werden. Das bedeutet meines Wissens das gesamte Cookie.

                nein.

                ein solches "session-cookie" (session bezogen auf die "lebensdauer" nur während der surf-sitzung, nicht in bezug auf ein serverseitiges konstrukt "session") zeichnet sich doch gerade dadurch aus, dass es _ohne_ ein "verfallsdatum" gesendet wird.

                die lebensdauer (neu) zu setzen, würde es automatisch zu einem nicht mehr auf die surf-sitzung beschränkten cookie machen.

                gruss,
                wahsaga

                1. Moin!

                  Soviel ich weiss setzt der Server das Cookie so, daß es auch nicht länger lebt als die Sitzung.
                  Die Lebensdauer muss also neu geschrieben werden. Das bedeutet meines Wissens das gesamte Cookie.

                  nein.

                  ein solches "session-cookie" (session bezogen auf die "lebensdauer" nur während der surf-sitzung, nicht in bezug auf ein serverseitiges konstrukt "session") zeichnet sich doch gerade dadurch aus, dass es _ohne_ ein "verfallsdatum" gesendet wird.

                  die lebensdauer (neu) zu setzen, würde es automatisch zu einem nicht mehr auf die surf-sitzung beschränkten cookie machen.

                  Ich meinte mit Sitzung jetzt nicht die Zeit, die das Browserfenster offen ist. Man kann aus Gründen der Sicherheit die Sitzung auch zeitlich begrenzen. Um zum Bleistift vergessene Browserfenster nicht zu einem allzugroßem Sicherheitsrisiko zu machen. Sorry, das hätte ich wohl genauer schreiben müssen, der Begriff Sitzung ist ja nicht ganz eindeutig.

                  MFFG (Mit freundlich- friedfertigem Grinsen)

                  fastix®

                  --
                  Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
                  1. hi,

                    Ich meinte mit Sitzung jetzt nicht die Zeit, die das Browserfenster offen ist. Man kann aus Gründen der Sicherheit die Sitzung auch zeitlich begrenzen.

                    OK, ich war von der PHP-standardeinstellung ausgegangen, und die ist ein cookie ohne ablaufzeitpunkt, das dann eben am ende der surf-sitzung automatisch verfällt.

                    gruss,
                    wahsaga

  2. Hi,

    ich versteh's nicht: für was brauchst du mit PHP Frames? Dann würde sich schon mal die Meldungszahl verringern...

    Und außerdem: Nutzer, die sich das Setzen von Cookies anzeigen lassen, verbieten es dir bzw. deiner Seite zu 90 % sowieso...

    E7