Bonjour à tous ,

Je voudrais savoir comment on fait pour destroy une session aprés un temps défini , j'ai fais quelques recherches et j'ai vu qui fallait utilisé setcookie mais j'arrive pas à faire fonctionné et aussi pour l'appliquer sur l'ensemble des passage qui nécessite une session pour y accéder

Merci d'avance pour vos réponses

6 réponses


Bonjour,
Pourquoi ne pas faire une fonction qui est appelé à chaque ouverture de page et qui testerais le temps d'ouverture d'une session ?

if ($_SESSION['duree'] > $temps){
    unset $_SESSION;
    header(....);
    }
seb2913
Auteur

J'ai jamais fait encore de destruction session à un temps défini mais par exemple si je fais :

<?php 
$_SESSION['dernier_acces']
if(time()-$_SESSION['dernier_acces']>10) 
{
  session_destroy(); 
  session_unset();
}
?>

J'avais trouvé ceci mais j'ai une question qui me turlupine car si je mets ou meme la solution de Carouge cela va le faire meme si il y'a une activité car c'est plutot ca que je comprends trop , j'aimerai savoir comment sa fonctionne car pour moi quand je lis comme ca si je mets ceci au bout de 10 min activité ou non ca va détruire la session donc quelqu'un peut m'expliquer comment est détecté l'inactivité et qu'il faut exécuté ce morceau code ?

Sinon ceci est a appliqué sur toutes les pages qui requiert une session ou seul au login suffit ?

seb2913
Auteur

ok sudovim , merci .

Quand tu dis la session expire à 120 secondes , c'est aprés 120 secondes d'inactivité ?

Sa m'intrigue de savoir comment est détecté l'inactivité si quelqu'un a une explication sa m'intéresse , merci pour vos réponses en tout cas

seb2913
Auteur

Alors j'ai utilisé ton morceau code sudo mais sa ne marche pas enfin je sais pas si je l'utilise correctement , voici le code de ma page d'execution login , je dois surement mal l'appliqué.


    $sql = "SELECT * FROM admin WHERE login = :login AND mdp = :mdp";
    $select = $bdd -> prepare($sql);
    $select -> execute(array(':login'=>$login , ':mdp'=> sha1($mdp)));
    $enr = $select -> fetch();

    if($enr == null)
    {
        header('location:login.php?erreur=authentification');
    }
    else
    {
        session_start();

        $_SESSION['numSession'] = session_id();
        $_SESSION['utilisateur'] = $login;

        session_set_cookie_params(120,"/"); 

        header('location:menu_admin.php');
    }
seb2913
Auteur

Ok j'ai modifié cela mais sa ne fonctionne toujours pas , c'est pas parce que c'est sur Wamp que sa pose soucis ????

seb2913
Auteur

Je vais regarder ca , merci pour tes réponses en tout cas.