8722 sujets

Développement web côté serveur, CMS

Bonjour,

Je n'arrive pas à changer la durée de mes sessions en PHP

Je change le gc_maxlifetime mais ça ne fait rien, si la personne ne fait aucune action la session est déconnecté 10min ou 15min après, alors que je voulais mettre 11h

ini_set('session.gc_maxlifetime', 39600);
session_start([
'cookie_httponly' => true,
'cookie_secure' => true
]);

Merci
salut

as tu utilisé session_set_cookie_params ?
parce que côté serveur ok tu as gc_maxlifetime mais côté client c'est session set cookie params
Modifié par JENCAL (13 Dec 2021 - 11:40)
non (j'avoue ne pas connaître grand chose en cookies et sessions Smiley rolleyes )
Je vais essayer tout de suite, merci ! Smiley smile
JENCAL a écrit :
salut

as tu utilisé session_set_cookie_params ?
parce que côté serveur ok tu as gc_maxlifetime mais côté client c'est session set cookie params


j'ai mis ça mais ça ne change rien Smiley ohwell


	ini_set('session.gc_maxlifetime', 39600);
	$maxlifetime=39600;
	session_start([
	  'lifetime' => $maxlifetime,
      'cookie_httponly' => true,
      'cookie_secure' => true
	]);
	date_default_timezone_set('Europe/Paris');
	setcookie(session_name(),session_id(),time()+$maxlifetime);
Pour le set cookie param c'est pour donner la config aux cookie côté navigateur

$lifetime = strtotime('+30 minutes', 0);
session_set_cookie_params($lifetime); //avant le session start bien sûr [smile]
session_start();


pareil pour gc_maxlifetime
ini_set('session.gc_maxlifetime', 1800) ;
        session_start();



Exemple avec une classe "Session" qui te permet de gérer ça

class Session{
    public static function init(){
        $lifetime = strtotime('+60 minutes', 0);
        session_set_cookie_params($lifetime);
        ini_set('session.gc_maxlifetime', 3600) ;
        session_start();
    }
    public static function set($key, $val){
        $_SESSION[$key] =$val;
    }
    public static function get($key){
        if(isset($_SESSION[$key])){
            return $_SESSION[$key];
        } else{
            return false;
        }
    }
    public static function checkSession(){
        self::init();
        if(self::get("adminlogin")==false){
            self::destroy();
            header("Location:login.php");
        }
    }
    public static function checkLogin(){
        self::init();
        if(self::get("adminlogin")==true){
            header("Location:index.php");
        }
    }
    public static function destroy(){
        session_destroy();
        header("Location:login.php");
    }
}
Malheureusement ça ne fonctionne toujours pas, ça ne change pas la durée Smiley decu je ne comprends pas où ça bloque...
Pourtant ma date de fin est bien jusqu'à demain mais quand j'actualise ma page au bout d'un petit moment ça me renvoi sur le formulaire de connexion.