IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

expiration d'une session


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de Akramweb
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2005
    Messages : 227
    Points : 197
    Points
    197
    Par défaut expiration d'une session
    bonjour à tous.
    voici mon probleme:
    je veux qu'une session soit expirer et rediriger 30 minutes apres que l'utilisateur accede à la page d'acces.
    voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    <?
    include "conn.php";
    session_start();
    $login=$_SESSION['login'];
    if($login){
    $sql="select * from admin where login='$login'";
    $result=mysql_query($sql);
    while($row=mysql_fetch_array($result)){
    $prio=''.$row['priorite'].'';
    $temps=''.$row['temps'].'';}
    $temps_ecou=time()+$temps;
    ?>
    <html><head><title>TEST</title></head>
    <body>
    <p><font color="#FF0000"><? echo $login;?></font></p>
    <?
    if($temps_ecou){
    header("location:logout.php");}
    else{
    if($prio=="administrateur"){
    ?>
    <p><a href="logout.php">Logout</a><br></p>
    <p><font color="#FF0000">C'est moi l'Admin</font></p>
    <?
    }
    else{
    ?>
    <p><a href="logout.php">Logout</a></p>
    <p><font color="#FF0000">Je suis un simple invité</font></p>
    <? } ?>
    </body>
    </html>
    <? } }
    else{
    header("location:index.php");} 
    ?>

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Tu pourrais garder en $_SESSION le moment de la dernière activité. Puis lorsque que le membre essaye de revenir sur la page tu fais un test et tu détruis la session.

    Sinon, il faudrait vérifier, tu pourrais réduire la durée de vie des sessions mais à se moment là ca le ferait qu'il ait activité ou non

  3. #3
    Membre habitué Avatar de Akramweb
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2005
    Messages : 227
    Points : 197
    Points
    197
    Par défaut
    mais ce que je voudrais moi c qu'une personne puisse me corriger le code

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 136
    Points : 133
    Points
    133
    Par défaut
    lu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
    $temps_ecou=time()+$temps; // $temps représente quoi ?
    ...
    if($temps_ecou){ // ce test, à priori, sera toujours vrai. 
    header("location:logout.php");}
    ...

  5. #5
    Membre habitué Avatar de Akramweb
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2005
    Messages : 227
    Points : 197
    Points
    197
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $temps_ecou=time()+$temps; 
    if($temps_ecou){ // ce test, à priori, sera toujours vrai. 
    header("location:logout.php");}
    time() represente le temps ecoulé depuis 1970
    $temps une variable recuperer depuis la base de données c la ou j'ai stocker les 30 minutes

    je m'explique :
    si $temps_ecou recoi le $temps(30) + times()
    la session doit etre expirer et rediriger vers ...

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 136
    Points : 133
    Points
    133
    Par défaut
    lu

    Donc je suppose que
    dans ce cas, pour que ton code fonctionne tu dois enregistrer la valeur de time() lors de la connexion et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $heure_connexion = time(); //lorsque l'utilisateur se connecte
    et ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if ((time() - $heure_connexion) > $time) {
    ...

  7. #7
    Membre habitué Avatar de Akramweb
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2005
    Messages : 227
    Points : 197
    Points
    197
    Par défaut
    bonjour;
    voila Sympho pour ton code je pense que c pas juste vu que la variable qui contient time()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $heure_connexion= time();
    s'incrément automatiquement
    alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if((time() - $heure_connexion) > $time) {
    
    est toujours fausse puisque
    time() - $heure_connexion=0
    et 0 est toujours inferieur à $time ($time=60)

    si quelqu’un a une autre réponse
    merci d’avance

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 136
    Points : 133
    Points
    133
    Par défaut
    $heure_connexion = time(); //lorsque l'utilisateur se connecte pas à chaque fois

  9. #9
    Membre habitué Avatar de Akramweb
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2005
    Messages : 227
    Points : 197
    Points
    197
    Par défaut
    désole mais toujours pas de résultat vu que time() est auto-incrementable,
    j'ai besoin d'une chose,c'est que a chaque il se connecte il garde la variable $heure_connexion en memoire sans quelle soit incrementé

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 136
    Points : 133
    Points
    133
    Par défaut
    salut

    à quel moment se fait la connexion ?

  11. #11
    Membre habitué Avatar de Akramweb
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2005
    Messages : 227
    Points : 197
    Points
    197
    Par défaut
    au moment ( X ):
    X=moment de la connexion
    et quand je mets time(),c 'est toujours 0.
    je m'explique:
    au moment de la connexion moi je veux le preserver dans une variable sans qu'il soit incrementé

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 136
    Points : 133
    Points
    133
    Par défaut
    salut,

    Tu ne m'as compris, l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $heure_connexion= time();
    // et on sauvegarde dans la session pour s'en servir plus tard.
    $_SESSION['heure_connexion'] = $heure_connexion;
    doit être exécutée uniquement lorsque l'utilisateur se connecte, pas à chaque fois que la page est chargée (sinon ça ne correspond plus à l'heure de connexion). donc tu dois mettre ces instructions dans la partie du code qui gère la connexion.

    -

  13. #13
    Membre habitué Avatar de Akramweb
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2005
    Messages : 227
    Points : 197
    Points
    197
    Par défaut
    Merci sympho et Kerod pour votre aide maintenant ça marche très bien, il me fallait juste stocker time() dans une session mais pas dans une variable.

  14. #14
    Membre confirmé
    Homme Profil pro
    IUT Informatique
    Inscrit en
    Mars 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : IUT Informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 412
    Points : 486
    Points
    486
    Par défaut
    Bonjour, j'ai une question concernant l'expiration de session.

    Si l'utilisateur utilise pas le site, ne fait rien dessus, le contenu de la variable $_Session est effacé au bout de 20min.

    Donc je suis en train de mettre en place une déconnexion automatique au bout de 20min d'inactivité.

    Du coup j'ai mi une vérification qui est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($_SESSION['Temps']+20<$temps)
    Mais en réfléchissant, si je fais je me dis que ca ne doit pas me rajouter 20min vu que c'est en timestamp le contenue de ma variable $_Session['temps'].

    J'ai fait des recherches mais j'ai pas trouvé grand chose, je voudrai savoir comment faire un timestamp correspondant à mes 20min?

    Merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. expiration d'une session en php
    Par alex61 dans le forum Langage
    Réponses: 3
    Dernier message: 09/12/2010, 16h43
  2. [Cookies] Expiration d'une session et message
    Par zatoichi27 dans le forum Langage
    Réponses: 2
    Dernier message: 18/06/2008, 12h14
  3. Expirer une session
    Par leo13 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 09/08/2007, 09h15
  4. Réponses: 1
    Dernier message: 09/11/2006, 17h45
  5. Réponses: 5
    Dernier message: 28/05/2006, 13h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo