hawkmaster: IE Webseite abgelaufen

Hallo zusammen,

bei einem lokalen XAMPP (testumgebung) ist mir folgendes aufgefallen.
Eine PHP Seite hat ein Loginsystem mit Sessions und Eintrag in einer DB.

1. Login mit Firefox.
Wenn ich nach dem erfolgreichen Login den FF Browser ganz schließe und anschließend wieder mit der gleichen URL öffne, bin ich immer noch eingeloggt. Wäre auch ok, weil der Login 24 Std. gelten soll.

2. Login mit IE 11
Wenn ich hier nach dem erfolgreichen Login den IE Browser schließe und mit gleicher URL öffne, kommt sofort die Meldung
"Die Webseite ist abgelaufen"

Woher kommt dieses unterschiedliche Verhalten? Sind das irgend welche Sicherheitseinstellungen des IE?

Kann man den IE zum gleichen Verhalten wie den FF bekommen?

vielen Dank und viele Grüße
hawk

  1. Aloha ;)

    Woher kommt dieses unterschiedliche Verhalten? Sind das irgend welche Sicherheitseinstellungen des IE?

    Das ist - schätze ich - im Internet-Explorer standardisiertes Verhalten für Cookies ohne Ablaufdatum (ich gehe davon aus, dass dein Session-Cookie nicht mit einem solchen belegt ist?) - zumindest sagt das meine Google-Recherche (Quelle.

    Kann man den IE zum gleichen Verhalten wie den FF bekommen?

    Versuch mal, die Lifetime des Session-Cookie irgendwie manuell zu setzen. Frag aber besser nicht mich, wie du das konkret machen sollst :D Es gibt andere hier, die dir das schneller beantworten können, ohne stundenlang rumzuprobieren :D

    Grüße,

    RIDER

    --
    Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
    ch:? rl:| br:> n4:? ie:% mo:| va:) js:) de:> zu:) fl:( ss:| ls:[
    1. Hallo
      danke dir für die Hilfe.

      Ich habe nun mal versucht eine Session Lifetime mitzugeben.

      $expireTime = time() + 60*1440;  //Tag = 86400 Sekunden
      session_set_cookie_params($expireTime);

      Wenn ich nun den IE schließe und wieder mit der gleichen URL öffne, dann kommt zwar nicht mehr die Meldung "Webseite abgelaufen" aber der Login wird trotzdem nicht gemerkt, weil eine komplett NEUE Session auf dem Server aufgemacht wird und hier steht ja nicht mehr der User Loginname drin.

      vielen Dank und viele Grüße
      hawk

  2. hi,

    Kann man den IE zum gleichen Verhalten wie den FF bekommen?

    Natürlich kann man das mit der entsprechenden Programmiertechnik, z.B. indem man für den Cookie kein Expires-Attribut vergibt, so dass der Browser den Cookie sofort löscht, wenn man den Browser schließt.

    Die Meldung "Die Webseite ist abgelaufen" deutet eher auf eine bestimmte Situation hin, die mit dem Cache-Verhalten zusammenhängt, mit einem "Login-System" kann ich das beim besten Willen nicht in Verbindung bringen und der Browser wahrscheinlich auch nicht.

    Nichstdestoweniger interessiert es mich, wie man ein solches "Login-System" programmiert, also:
    Was Du da gemacht?

    MfG

    1. Hallo Rolf,

      danke auch dir.

      Was Du da gemacht?

      Na ja vielleicht hört sich auch "Login-System" zu hochtrabend an :-)

      In der Session wird der User Loginname und eine einmalige UIN gespeichert
      Zudem wird in der Datenbank in einer Tabelle die UIN, der Browser, IP und der Loginname gepsichert.

      Dann wird jedesmal geprüft ob es diesen Login noch gibt.

      SELECT userloginname FROM mylogin WHERE uin = :uin AND ip = :ip AND browser = :browser AND userloginname = :userloginname

      Hmm, ich sehe gerade das auf dem Webserver jedesmal eine neue Session Datei angelegt wird, sobald man den IE schließt und wieder öffnet. AUch wenn ich wieder das "session_set_cookie_params($expireTime);" entferne.

      vielen Dank und viele Grüße
      hawk

      1. hi,

        Na ja vielleicht hört sich auch "Login-System" zu hochtrabend an :-)

        Ach, das können wir schon so nennen, ist ja schließlich unsere Arbeit wo drinsteckt ;)
        Ich selbst hab mich mal stundenlang durch PHP geprügelt, damit mein Code endlich das macht, was er soll und nicht das, was PHP will. Letzdendlich habe ich die PHP-Idee übernommen, Session-Dateien anzulegen, einen in Perl entsprechenden Serializer dazu und...

        SELECT userloginname FROM mylogin WHERE uin = :uin AND ip = :ip AND browser = :browser AND userloginname = :userloginname

        ... die Login-Daten (group, user, zeitstempel) in der Session-Datei zu speichern. Eine DB ist aber auch ok.

        Hmm, ich sehe gerade das auf dem Webserver jedesmal eine neue Session Datei angelegt wird, sobald man den IE schließt und wieder öffnet.

        Jow, so sollten sich auch die anderen Browser verhalten: Beim Schließen den Keks löschen und die Session verwerfen.

        AUch wenn ich wieder das "session_set_cookie_params($expireTime);" entferne.

        Ein Session-Cookie sollte kein Expires-Attribut haben. FF behält einen Cookie ohne Expires nur, wenn es einen Absturz gab, das ist aber nicht der Regelbetrieb.

        Bei Dir werden vermutlich noch Expires-Header (irgendwelche Zeitangaben) in die Response gesetzt, guck Dir das mal an mit den FF-Entwicklertools.

        Wenn möglich, die Seiten wo sich eingeloggte User rumtummeln, nicht cachen.

        MfG

        1. Hallo

          Jow, so sollten sich auch die anderen Browser verhalten: Beim Schließen den Keks löschen und die Session verwerfen.

          Wie machen das dann eigentlich andere Webseiten wie etwa Amazon oder EBay. Wenn man sich hier nicht explizit abmeldet und den Browser schließt, ist man doch auch beim nächsten Besuch der Seite wieder eingeloggt?

          Bei Dir werden vermutlich noch Expires-Header (irgendwelche Zeitangaben) in die Response gesetzt, guck Dir das mal an mit den FF-Entwicklertools.

          Eigentlich mache ich nur "session_start()" ohne irgend welche Zeitangaben. Ich werde es aber nochmals genauer untersuchen.

          vielen Dank und viele Grüße
          hawk

          1. Tach!

            Wie machen das dann eigentlich andere Webseiten wie etwa Amazon oder EBay. Wenn man sich hier nicht explizit abmeldet und den Browser schließt, ist man doch auch beim nächsten Besuch der Seite wieder eingeloggt?

            Sie verwenden Cookies. Das ist die einfachste Art und Weise und funktioniert, solange der Anwender sie nicht löscht.

            Eigentlich mache ich nur "session_start()" ohne irgend welche Zeitangaben. Ich werde es aber nochmals genauer untersuchen.

            Ja, solltest du. Ohne genaue Analyse ist das doch nur ein Stochern im Nebel. Browser haben Entwicklerwerkzeuge und ähnliche Möglichkeiten, um unter anderem Cookies zu untersuchen.

            dedlfix.

            1. Hallo zusammen,

              nur als kleines Feedback:
              Es hat gar nichts mit PHP oder irgend welchen Session Zeitangaben zu tun.
              Die Ursache warum der FF nach dem schließen und öffnen der gleichen URL immer die gleiche Session Datei genommen hat, liegt an den FF Einstellungen selbst.

              Unter "Extras--Einstellungen--Tab Allgemein"
              Bei stand bei "Wenn Firefox gestartet wird" die Option

              "Fenster und Tabs der letzten Sitzung anzeigen"

              Stelle ich um auf "Startseite anzeigen" dann verhält sich der FF wie der IE und macht jedesmal eine neue Session Datei auf dem Webserver auf.

              Das bedeutet dann wohl:
              Wenn man einen dauerhaften User Login möchte, also auch wenn der Anwender den Browser schließt, dann kann man wohl nur mit Cookies arbeiten oder?
              Selbst wenn man eine PHP Session Lifetime von einem Jahr angeben würde.

              vielen Dank und viele Grüße
              hawk