We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 17883
    • 1,039 Posts
    Hast Du es eigentlich mal versucht, auf Deiner heimischen Kiste, die Session ablaufen zu lassen?

    Ja, nach ca. 2 Stunden war ich auf jeden Fall draußen. Jetzt versuche ich nochmal, nach ca. 15 Minuten dran zu denken wink
      • 17883
      • 1,039 Posts
      Hmmm, nach ca. 40 Minuten war die Session noch aktiv.
        • 28436
        • 242 Posts
        Die Härte, gleicher Effekt

        setz mal in die index.php(frontend nicht manager) vor dem exit() am Ende ein print_r( $_SESSION ); und schau mal welchen Wert "[modx.mgr.session.cookie.lifetime]" hat.

        Wenn der bei Dir auch "0" teilen wir beide schonmal mit samt dem Zerstörungsmann und ich vermute auch mit netnoise die gleichen Vorraussetzungen smiley

        Als Betriebsystem hast Du auch ein windows mit vielleicht xampp als Serverumgebung?

        tschüß, Stefan


        Nachtrag: Online hat meine Session jetzt knapp über 20min gehalten. muß mal mit einem anderen Browser versuchen
          • 21255
          • 215 Posts
          rolleyes Ich habe da zwei Sachen durcheinander gebracht. Es gibt da ein anderes Open-Source-Projekt, dass das Session-Problem gelöst und den Timeout auf 10 Minuten gesetzt hat. MODx war das aber nicht. Asche über mein Haupt. lipsrsealed

          Bei MODx wird (wohl seit 0.9.6.) die Config-Einstellung [tt]session.cookie.lifetime[/tt] beim Setup auf 604800 Sekunden gesetzt (7 Tage). Die werden aber nur dann aktiv, wenn beim Einloggen "Remember me" aktiviert ist. Ansonsten ist das Cookie mit Ende der Browsersitzung weg.

          MODx setzt entgegen meiner ursprünglichen Aussage (naja, war ne Vermutung ;-) kein Zeitlimit für die Aktivität der Sitzung, sondern überlässt dies PHP.

          Die unterschiedlichen Zeiten bis zum automatischen Session-Ende kommen durch die PHP-Einstellungen zustande. Auf einem Produktiv-Server werden häufiger inaktive Sessions gelöscht als auf dem Rechner daheim (da auf letzterem weniger Requests). Zurück zur Ausgangsfrage wink Die entsprechenden PHP-Einstellungen für die Dauer Deiner Sitzung, Stefan:

          # php.ini
          session.gc_probability = 1
          session.gc_divisor     = 100
          session.gc_maxlifetime = 1440
          


          Alternativ dieser Hack in [tt]includes/accesscontrol.inc.php[/tt] (nach Zeiel 14 einfügen):
          // check if session is too old
          if(isset($_SESSION['modx.session.created.time']) && ($_SESSION['modx.session.created.time']< (time() - 3600))) {
            $_SESSION['mgrValidated'] = NULL;
            @session_destroy();
            unset($_SESSION);
          }   
          
            • 28436
            • 242 Posts
            Hey coole Sache, tausend Dank!

            Eine Frage bleibt, wenn angenommen, und so siehts bisher aus, die Sitzung praktisch unendlich bestehen bliebe, welchen Zweck hat dann "manager/includes/session_keepalive.php"? Da siehts ja so aus, als würde hier die Sitzung erneuert damit sie eben nicht während der Arbeit unterbricht. Kann auch sein das ich völlig panne bin... und das garkeine Rolle spielt. Was weis ich, seltsam fände ich eine solche nicht vorandene Sicherheitsmaßnahme allemal.


            ciao, Stefan
              • 21255
              • 215 Posts
              Quote from: stefan at Jun 14, 2007, 01:11 PM

              Eine Frage bleibt, wenn angenommen, und so siehts bisher aus, die Sitzung praktisch unendlich bestehen bliebe, welchen Zweck hat dann "manager/includes/session_keepalive.php"?
              Das tut sie nicht. Sie wird nach [tt]session.gc_maxlifetime[/tt] Sekunden gelöscht. (Ob bzw. wann sie wirklich gelöscht wird hängt noch von [tt]session.gc_probability[/tt] und [tt]session.gc_divisor[/tt] ab)
                • 28436
                • 242 Posts
                Ah ok! Hab verstanden Sir!

                Danke und schönen Tag noch.
                tschüß, Stefan
                  • 21255
                  • 215 Posts
                  Der Code hatte übrigens Fehler wink Dieser sollte aber gehen

                  // check if session is too old
                  if(isset($_SESSION['modx.session.created.time'])) {
                    if($_SESSION['modx.session.created.time']< (time() - 3600)) {
                      $_SESSION['mgrValidated'] = NULL;
                      @session_destroy();
                      unset($_SESSION);
                    } else {
                      $_SESSION['modx.session.created.time'] = time();
                    }
                  }
                  
                    • 28436
                    • 242 Posts
                    Ah, die Qualitätssicherung funktioniert. Danke
                      • 7182
                      • 11 Posts
                      Hi,

                      ich wäre wohl nie auf die Lösung gekommen, da wie man hier ließt, sich MODx auf x - unterschiedlichen Systeme immer anders (von der Session Lifetime) verhält. Deshalb danke ich für diesen Lösungsansatz und werd es nachher gleich mal ausprobieren.

                      Gruß Sascha