Sessions php

Mathieu -  
 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 :)
A voir également:

4 réponses

StreM Messages postés 515 Date d'inscription   Statut Membre Dernière intervention   124
 
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.
7
Mathieu
 
J'ai testé ca aussi mais apparemment ca ne marchait pas non plus.
Quand est ce qu'il faut le mettre ?
Avant chaque session_start ? Ou seulement la premiere fois lors de l'identification et de l'ouverture de session ?
0
Afrofeel
 
je viens d'essayer d'inserer ini_set('session.gc_maxlifetime', 1000);
start();
mais malgre cela ma session reste active meme apres ce temps la.
C'est quoi le blem?
0
Utilisateur anonyme
 
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>';  
    }  
}  
?>  
0
GallyNet Messages postés 434 Date d'inscription   Statut Membre Dernière intervention   387
 
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)
5
Utilisateur anonyme
 
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.
1
GallyNet Messages postés 434 Date d'inscription   Statut Membre Dernière intervention   387
 
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.
0
Mathieu
 
Il faut le mettre avant ou après le session_start() ?

Je veux changer la durée de session, car mes membres ont de longs formulaires à remplir. Et en général ils mettent plus de 24 ,minutes pour tout remplir et donc lorsqu'ils valident, la session a déjà expirée et ils perdent tout !
0
djerem06 Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   6
 
tin c'est un truc de fou, pouquoi toujour demander pourquoi et vouloir faire faire autrement.
on veu ralonger le temps d'une session point barre !
0
djerem06 Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   6
 
http://www.jjsworld.fr/blog/21-developpement/94-permettre-une-duree-de-session-illimitee-dans-une-application-web
0
picolo
 
C est souvent le problème,
tu as plus de commentaires HS, genre :pourquoi tu veut faire ca ???
OSEF, le monsieur te demande comment rallonger la durée de session !!!
0