Ankündigung

Einklappen
Keine Ankündigung bisher.

Session wird nach max Zeit immer beendet

Einklappen

Neue Werbung 2019

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

  • Session wird nach max Zeit immer beendet

    Hallo!

    Sollte die max lifetime einer session nicht immer vom letzten request zählen, oder hab ich da was falsche verstanden.. In meinem Fall unten wird nach ca. 30 Minuten die Session FIX beendet (also man wird rausgeschmissen) und das login kommt.

    PHP-Code:
    // Sessiondauer 30 Minuten
    session_set_cookie_params(1800);
    session_start();

    // Session Fixation durch Vergabe einer neuen Session-ID beim ersten Login verhindern
    if (!isset($_SESSION['PHPSESSID'])) {
       
    session_regenerate_id(true);
       
    $_SESSION['PHPSESSID'] = true;
    }

    etc... 

    Danke!
    Juergen
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

  • #2
    hast Du Dir mal diesen Kommentar im manual durchgelesen?
    Er scheint das gleiche Problem zu beschreiben.

    Kommentar


    • #3
      Danke.. auch wenn ich sowas nicht gerne lies....

      Kann es sein das die php Doku hier hinkt - in Bezug auf Angabe was bei der max lifetime von wo weg gezählt wird etc..

      //EDIT: Gibt es noch eine andere Variante wie es üblicherweise funktioniert?

      Ich werde sonst diese hier mal versuchen:
      http://www.php.net/manual/en/functio...rams.php#78930


      PHP-Code:
      private function startSession($time 3600$ses 'MYSES') {
          
      session_set_cookie_params($time);
          
      session_name($ses);
          
      session_start();

          
      // Reset the expiration time upon page load
          
      if (isset($_COOKIE[$ses]))
            
      setcookie($ses$_COOKIE[$ses], $_SERVER['REQUEST_TIME'] + $time"/");

      juergen
      The string "()()" is not palindrom but the String "())(" is.

      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        Also der Code im letzten Post funktioniert bei mir .. somit erledigt..

        Alternativ hab ich noch das gefunden ungetestet...

        PHP-Code:
        if (isset($_SESSION['LAST_ACTIVITY']) and (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
            
        // last request was more than 30 minates ago
            
        session_unset();

        session_destroy();

        }
        $_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp 
        The string "()()" is not palindrom but the String "())(" is.

        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Hab nun die zweite Variante auch versucht.. funktioniert grundsätzlich ausser das ich teilweise dann nach eingabe der gültigen logindaten das loginform nochmals bekam, ohne fehler beim 2. mal gings problemlos.. nachdem die erste variante besser funktioniert und ich zu faul zum debuggen bin (warum auch??) bleib ich bei der variante von dem US-Kollegen
          The string "()()" is not palindrom but the String "())(" is.

          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            Ich finde eine Variante nach 2/ besser, weil man serverseitig bessere Kontrolle über den Ablauf der Session hat. Man kann bspw. ein Maximal-Timeoff und ein Aktivitäts-Timeout gleichzeitig führen.
            [COLOR="#F5F5FF"]--[/COLOR]
            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
            [COLOR="#F5F5FF"]
            --[/COLOR]

            Kommentar


            • #7
              //EDIT

              Zitat von nikosch Beitrag anzeigen
              Ich finde eine Variante nach 2/ besser, weil man serverseitig bessere Kontrolle über den Ablauf der Session hat. Man kann bspw. ein Maximal-Timeoff und ein Aktivitäts-Timeout gleichzeitig führen.
              Mir ja eigenltich auch, weil ich da weiß was der Code macht, ber der ersten Variante bin ich mir nicht so sicher, sie "funktioniert halt" naja..

              Hab mir nun doch den 2. nochmals angesehen, funktioniert soweit nun auch - jetzt hab doch noch eine Frage... Wäre die Reihenfolge unten so ok? vor allem das mit der regeneration ist mir nicht ganz klar wo das hingehort..

              PHP-Code:
              // Login/SeitenSperre
              session_set_cookie_params(0);
              session_start();

              // Abmelden geklickt
              if (isset($_POST["logout"])) {
                  
              session_unset();
                  
              session_destroy();
                  die(
              header("location:index.php"));
              }

              // letzter request länger her als erlaubt
              if (isset($_SESSION['LAST_ACTIVITY']) and ($_SERVER['REQUEST_TIME'] - $_SESSION['LAST_ACTIVITY'] > 1800)) {
                  
              session_unset();
                  
              session_destroy();
                  die(
              header("location:index.php"));
              }  

              // zeitstempel letzte akivität updaten
              $_SESSION['LAST_ACTIVITY'] = $_SERVER['REQUEST_TIME']; 


              // Session Fixation durch Vergabe einer neuen Session-ID beim ersten Login verhindern
              if (!isset($_SESSION['PHPSESSID'])) {
                 
              session_regenerate_id(true);
                 
              $_SESSION['PHPSESSID'] = true;

              Danke!
              The string "()()" is not palindrom but the String "())(" is.

              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
              PHP.de Wissenssammlung | Kein Support per PN

              Kommentar

              Lädt...
              X