Sessions php
Mathieu
-
Utilisateur anonyme -
Utilisateur anonyme -
Salut,
Voila sur un site web que j'ai fais, les visiteurs sont identifiés via une session php.
Le problème c'est que la configuration du serveur fait que la session expire automatiquement au bout de 24min.
C'est le réglage par défaut.
J'aimerai rallonger ce temps d'expiration, savez vous comment faire ?
Il faut à priori utiliser :
ini_set('session.gc_maxlifetime', time() + 3600);
session_start();
Mais je ne suis pas sur que ca s'utilise comme ca.
Aidez moi SVP :)
Voila sur un site web que j'ai fais, les visiteurs sont identifiés via une session php.
Le problème c'est que la configuration du serveur fait que la session expire automatiquement au bout de 24min.
C'est le réglage par défaut.
J'aimerai rallonger ce temps d'expiration, savez vous comment faire ?
Il faut à priori utiliser :
ini_set('session.gc_maxlifetime', time() + 3600);
session_start();
Mais je ne suis pas sur que ca s'utilise comme ca.
Aidez moi SVP :)
4 réponses
-
Tu y es presque, mais c'est :
ini_set('session.gc_maxlifetime', 3600);
session_start();
3600 est la durée, et non la date d'expiration, comme dans les cookies.
-
-
-
Il existe une solution c'est d'ouvrir une session que l'on appellera par exemple $_SESSION['temps_de_connexion'] et de lui attribué la valeur timestamp actuel + le nombre de seconde souhaité pour le temps de la connexion, exemple:
Le code suivant marche impeccable mais vous ne serai jamais à l'abri d'être déconnecté avant le "ini_set session time":<?php session_start(); if(isset($_GET['deco'])) { // si l'utilisateur demande a être déconnecté // on détruit les sessions: unset($_SESSION['temps_de_connexion'], $_SESSION['pseudo']); echo "Déconnecté !<br />"; } if(empty($_SESSION['pseudo']) OR empty($_SESSION['temps_de_connexion'])) { $_SESSION['pseudo'] = "son pseudo"; $_SESSION['temps_de_connexion'] = time()+6; // connexion pendant 6 secondes max echo 'Vous venez de vous connecter<br /><a href="'.$_SERVER['PHP_SELF'].'">Recharger</a><br />'; } else { # ensuite sur les pages de votre site, il suffit de faire une condition: if(time() > $_SESSION['temps_de_connexion']) { // si le timestamp actuel est dépassé // on détruit les sessions: unset($_SESSION['temps_de_connexion'], $_SESSION['pseudo']); echo 'Vous êtes déconnecté.<br /><a href="'.$_SERVER['PHP_SELF'].'">Recharger</a>'; } else { # on peu également dire au membre connecté ce qu'il lui reste en temps de connexion: echo "Bonjour ".$_SESSION['pseudo']."<br />Il vous reste ".($_SESSION['temps_de_connexion']-time())." secondes avant la deconnexion."; echo '<br /><a href="?deco">Déconnexion</a> - <a href="'.$_SERVER['PHP_SELF'].'">Recharger</a>'; } } ?>
-
-
Ah OK, ca doit être de sacré formulaire.
Normalement il faudrait que tu mette ton ini_set('session.gc_maxlifetime', 3600); tout au début du script, avant de faire le session_start().
Mais c'est pas pour autant quela modification sera faite: le php.ini du serveur peut être fait de telle façon ne puisse pas changer les valeurs. (a vérifier quand même) -
Bonsoir,
je souhaiterai définir le temps d'une session précise à détruire au bout d'un temps défini par moi, c'est possible?
Merci d'avance. -
Il faut le mettre a chaque fois que tu fais "session_start()"
Sinon, pourquoi veut tu changer le temps d'une session ? Si un utilisateur n'a rien fait au bout de 24 minutes, on le considère généralement comme étant parti.