ini_get('session.gc_maxlifetime') -Problem

  • Weiß jemand wie man die "echte" Restzeit einer Session auslesen kann?
    Mit
    ini_get('session.gc_maxlifetime')
    bekomme ich den Wert, der in der php.ini steht, aber ich hab den Verdacht, dass der Wert ignoriert bzw erneuert wird sobald User die Seite neu aufruft.


    Via google findet man nur "mitzählen". Also Zeit beim Session erstellen merken und wenn die Zeit (maxliftime) abgelaufen ist löschen.
    Aber bei dem oben beschriebenen bringt mir das nix =/

  • Naja es macht ja durchaus Sinn, dass die Session erneuert wird, wenn der User die Seite neu aufruft.. Sonst wird er ja irgendwann rausgeschmissen obwohl er vielleicht gerade noch was macht.. Von daher macht das schon Sinn ;)

  • Irgentwie ja.
    Also ist die session "endlos" gültig, solange der User die Seite innerhalb der Verfallszeit wieder aufruft *fragezeichen*
    Dann müsste ich die den Start der Session merken lassen, und wenn Session+xMin < time() die Session löschen - falls ich dem User ein "Ultimatum" stellen will :D


    Da fällt mir ein:
    jetzt wird mir auch klar, warum bei uns die adm Session ewig bleibt -> wenn User auf einer Seite "stehen bleibt" auf der aller x min eine Ajax-request ausgeführt wird, dann erneuert sich andauernd die Session.
    Irgentwie ne Art Sicherheitsrisiko. Wenn User vom Rechner weggeht und dabei diese seite offen lässt, dann erhält sich der Login ja ewig.

  • Ja, so kann man das machen - am besten dazu die verbleibende Zeit im Header irgendwo anzeigen lassen und daneben einen "verlängern" Button, sodass der User bei Bedarf die Session manuell verlängern kann.

  • genau, gute idee!
    Und damit evtl Eingaben nicht umsonst waren den verlängernButton per ajax.
    werd ich mal testen =)


    EDIT:
    lauras
    Funktioniert =)


    Hab in der index.php eingefügt:

    PHP
    ini_set('session.gc_probability', 1); # < ", 1" sorgt zusammen mit gc_divisor dafür, dass abgelaufene session "bereinigt" werden. (Erklärung hier http://www.php.net/manual/de/session.configuration.php#ini.session.gc-divisor)
    ini_set('session.gc_divisor', 1);
    ini_set('session.gc_maxlifetime', 10); # life time 10 sec


    Wenn die Session jetzt abläuft, dann ist sie allerdings nicht zwingend tot.
    Hab das Verhalten mal getestet (Xampp PHP Version 5.4.7) und hab festgestellt - erst wenn das Script (also die Webseite) von anderer Stelle aufgerufen wird, dann werden Sessions bereinigt.
    Also beim Testen 2 Browser öffnen - im einen eingeloggt mit Session, im anderen nicht.


    Sobald die Session abgelaufen ist und das Script von anderer Stelle angestoßen wurde, ist die Session weg.
    Liegt (soweit ich das verstanden habe) daran, dass bei die Bereinigung beim aufruf von session_start(); angestoßen wird.


    Jetzt der "Button":
    Ein Button auf WebSeite ruft per JS die index.php auf und schickt dabei irgent einen Wert (zB per GET index.php?sessionrefresh=1).
    In der index fange ich es dann ab, und lasse das Script gleich wieder "sterben" - die;
    Das wars - dadurch wurde die Session erneuert =)


    Test Bsp:html-seminar.de/woltlab/attachment/441/
    =)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!