91falk: Deaktivierte Cookies: $_SESSION nur im Microsoft IE

Hallo!
Ich habe folgendes Problem:
Ich benutze, um den Loginstatus zu prüfen $_SESSION.
Nur wenn ich cookies deaktiviere, funktioniert dies nur im Microsoft Internet Explorer.
Nicht aber in Safari oder Firefox (auch bei Freunden nicht)
Mit Cookies funktioniert alles einwandfrei.
Ich weiß echt nicht, woran das liegen könnte...

  1. Hi,

    Ich benutze, um den Loginstatus zu prüfen $_SESSION.
    Nur wenn ich cookies deaktiviere, funktioniert dies nur im Microsoft Internet Explorer.
    Nicht aber in Safari oder Firefox (auch bei Freunden nicht)
    Mit Cookies funktioniert alles einwandfrei.

    Hast du Cookies von vornherein deaktiviert, oder "mittendrin"?
    Wenn du dich auf PHPs Fallback-Mechanismus, die SID per URL/hidden field zu uebergeben verlaesst, dann funktioniert dieser idR. nur dann, wenn Cookies von vornherein nicht verfuegbar waren. Andernfalls nimmt PHP an, Cookies waeren verfuegbar, und verzichtet auf den Fallback-Mechanismus bei zukuenftigen Requests.

    MfG ChrisB

    --
    "The Internet: Technological marvel of marvels - but if you don't know *what* you're lookin' for on the Internet, it is nothing but a time-sucking vortex from hell."
    1. Hello,

      Wenn du dich auf PHPs Fallback-Mechanismus, die SID per URL/hidden field zu uebergeben verlaesst, dann funktioniert dieser idR. nur dann, wenn Cookies von vornherein nicht verfuegbar waren. Andernfalls nimmt PHP an, Cookies waeren verfuegbar, und verzichtet auf den Fallback-Mechanismus bei zukuenftigen Requests.

      Wie ist denn der genaue Ablauf?

      Beim Cookiesetzen für die Session wird geprüft, ob schon einer vorhanden ist.
      Wenn keiner vorhanden ist, transsid erlaubt ist und Cookies ebenfalls, wird sowohl ein Cookie gesetzt, als auch das Rewriting der Seite vorgenommen für die transparente SID.

      Kommt ein Request mit beidem, wird nach dem Sessionstart mit dem Cookie weitergearbeitet, kommt ein Request nur mit der tansparenten SID, wird damit weitergearbeitet. Wird dann trotzdem noch versucht, wieder ein Cookie zu setzen? Das habe ich tatsächlich noch nie so genau untersucht...

      Ein harzliches Glückauf

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. Hi,

        Wie ist denn der genaue Ablauf?

        Beim Cookiesetzen für die Session wird geprüft, ob schon einer vorhanden ist.
        Wenn keiner vorhanden ist, transsid erlaubt ist und Cookies ebenfalls, wird sowohl ein Cookie gesetzt, als auch das Rewriting der Seite vorgenommen für die transparente SID.

        Beim erstmaligen Start der Session kann PHP noch nicht wissen, ob der Client Cookies akzeptiert oder nicht. Also wird zunaechst mal beides gemacht - Cookie-Header rausgeschickt, und SID an Links/Formulare angehaengt.

        Kommt ein Request mit beidem, wird nach dem Sessionstart mit dem Cookie weitergearbeitet, kommt ein Request nur mit der tansparenten SID, wird damit weitergearbeitet. Wird dann trotzdem noch versucht, wieder ein Cookie zu setzen?

        Kommt ein Request "mit beidem" zurueck, dann geht PHP davon aus, dass Cookies "funktionieren" - und verzichtet von da ab darauf, die SID in Links/Formulare mit einzuarbeiten. Der Sch(l)uss kann natuerlich nach hinten los gehen, wenn sich der Nutzer dann irgendwann "zwischendrin" entscheidet, ab da keine Cookies mehr akzeptieren, und damit auch keine mehr mit den kuenftigen Requests mitsenden zu wollen - dann hat PHP gar nichts in der Hand, um den Client zu identifizieren, und session_start beginnt damit eine neue Session. Aber der Fall ist in der Praxis wohl eher unwahrscheinlich - sowas "macht" der "normale" Nutzer nicht.

        Ob PHP weiterhin versucht, Cookies zu setzen, wenn die Erkennung bereits ueber die Trans-SID laeuft, weiss ich gerade auch nicht.

        (Obiges alles bezogen auf die Default-Einstellungen, die man mit aktuellen PHP-Versionen beim "Durchschnittshoster" antrifft. In PHP 6 wird bspw. session.use_only_cookies per Default auf 1 gesetzt sein.)

        MfG ChrisB

        --
        "The Internet: Technological marvel of marvels - but if you don't know *what* you're lookin' for on the Internet, it is nothing but a time-sucking vortex from hell."
    2. Moin,

      Hast du Cookies von vornherein deaktiviert, oder "mittendrin"?
      Wenn du dich auf PHPs Fallback-Mechanismus, die SID per URL/hidden field zu uebergeben verlaesst, dann funktioniert dieser idR. nur dann, wenn Cookies von vornherein nicht verfuegbar waren. Andernfalls nimmt PHP an, Cookies waeren verfuegbar, und verzichtet auf den Fallback-Mechanismus bei zukuenftigen Requests.

      MfG ChrisB

      Meine Cookies sind von vornherien deaktiviert.
      In Firefox gibt es die Funktion
      "Cookies akzeptieren, bis Firefox geschlossen wird"
      Kann es sein dass damit genau die $_SESSION gemeint ist?
      Wenn ich bei Firefox Keine Cookies akzeptier, ist diese Funktion auch abgeschaltet.
      Das würde auch erklären, warum das Phänomen nicht Beim Microsoft IE auftritt, da dort eine solche Funktion nicht existiert.

      1. Hello,

        Das würde auch erklären, warum das Phänomen nicht Beim Microsoft IE auftritt, da dort eine solche Funktion nicht existiert.

        Der IE unterscheidet ganz ehrlich und benutzerverständlich zwischen transienten Cookies und persistenten Cookies. Je mehr ich mich mit dem Firefox herumärgern muss, desto besser finde ich doch den IE.

        Es scheint sich also beim Firefox um eine ganz subtile Werbemasche für den IE zu handeln ;-)

        Ein harzliches Glückauf

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de