2016-10-30 3 views
1

ich diesen Code verwende auf meinem loginsite:ini_set Sitzung maxlifetime läuft nicht

if(isset($_POST['submitted'])) 
{ 
ini_set('session.gc_maxlifetime', 60); 

session_set_cookie_params(60); 
session_start(); 

    if($fgmembersite->Login()) 
    { 
     $fgmembersite->RedirectToURL("loginhome.php"); 
    } 
} 

Die Idee war, dass, wenn sich der Benutzer anmeldet und die Submit-Button drückt der maxlifetime zählt eine bestimmte Zeit nach unten (hier zu Testzwecken 60 Sekunden) und löscht dann die Sitzung auf einer beliebigen Seite, die nach dem Login erscheint. Ich habe es auf loginhome.php ausprobiert, wo ich nach 60 Sekunden getreten wurde und mich erneut anmelden musste (also funktionierte es hier gut). Aber wenn ich weiter gehe, auf anderen Seiten des Login-Bereichs, funktioniert es nicht mehr. Ich habe auch versucht, den Code auf jede Seite zu kopieren, so dass der Timer für jede Seite getrennt funktioniert, was nicht funktioniert. Kann mir jemand helfen?

Grüße

Antwort

0

Auch wenn Sie es auf 60 Sekunden eingestellt, wird es nicht bei jeder Anfrage geht auslaufen. PHP würfelt jedes Mal, wenn eine Seite angefordert wird, ob es bei dieser Anfrage Sitzungen ablaufen lassen wird. Wenn Sie sich in einer Entwicklungsumgebung befinden, können Sie festlegen, dass "Würfel" nur eine Zahl haben. Das heißt, es wird ablaufen und Müll sammeln bei jeder Anfrage, wenn Sie die folgenden Einstellungen in php.ini setzen:

session.gc_probability "1" 
session.gc_divisor "1" 
Verwandte Themen