11
votes

PHP - Détruisez la session sinon aucune action en 10 minutes

Y a-t-il une option pour détruire une session si l'utilisateur n'effectue aucune action en 10 minutes?


0 commentaires

6 Réponses :


15
votes
session_start();

// 10 mins in seconds
$inactive = 600; 

$session_life = time() - $_SESSION['timeout'];

if($session_life > $inactive) {
   session_destroy();
   header("Location: logoutpage.php");
}

$_SESSION['timeout']=time();
The code above was taken from this particular page.

2 commentaires

C'est tellement (Stackoverflow) Style de poster le code directement, puis Lien vers la source . De cette façon dans quelques années si la source ferme votre réponse est toujours utile. Mais n'oubliez pas de lier!


@Frankie S'il vous plaît assurez-vous de le modifier correctement la prochaine fois. Vous avez supprimé une partie du lien, ce qui rend le point à un fil complètement différent!



11
votes

Essayez de définir le délai de session à 10 minutes.

ini_set('session.gc_maxlifetime',10);


1 commentaires

Où devrais-je mettre cette ligne de code dans session.php?



0
votes

Comparez les horodatages entre deux demandes, une de la demande actuelle, une fois stockée dans la session.


0 commentaires

3
votes

J'ai modifié la réponse ci-dessus et cela fonctionne bien:

// inactive in seconds
$inactive = 10;
if( !isset($_SESSION['timeout']) )
$_SESSION['timeout'] = time() + $inactive; 

$session_life = time() - $_SESSION['timeout'];

if($session_life > $inactive)
{  session_destroy(); header("Location:index.php");     }

$_SESSION['timeout']=time();


0 commentaires

2
votes

y compris le JavaScript suivant de la page provoquera une vérification de l'inactivité en appelant la fonction checkidletime () chaque seconde. Activité sur la page Réinitialise _idlesecondscounter à 0. xxx


1 commentaires

Bien que ce code puisse répondre à la question, fournir des informations sur la manière et expliquer pourquoi il résout le problème améliore sa valeur à long terme.



4
votes

Je l'ai fait avec le code suivant:

//10 min
if( !isset($_SESSION['logout']) ){
      $_SESSION['logout'] = strtotime('+10 minutes', time()); 
    }

    if( time() > $_SESSION['logout'])
    {
      session_destroy();
        header("Location: index.php"); 
    }else{
            $_SESSION['logout'] = strtotime('+10 minutes', time());
        }
    //echo date('Y/m/d h:i:s',$_SESSION['logout']);
    //echo $_SESSION['logout'];


0 commentaires