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 :

Session qui se "ferme" au bout de 2 pages


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut Session qui se "ferme" au bout de 2 pages
    Bonjour,

    j'ai créé un site avec une zone d'authentification (login+mot de passe).
    Quand on se connecte, on entre dans la partie privée, on clique sur des liens du menu et voila. Usage normal quoi.

    Enfin sous Chrome en tout cas.

    Sous firefox et IE, j'ouvre bien ma première page une fois qu'on est connecté, mais si je clique sur un autre lien du menu, hop, je reviens à ma page d'authentification.

    Et c'est le même comportement sur les deux navigateurs, aucune page spécifique. Au bout de la seconde ouverture, hop je reviens au départ.

    Est-ce que cela vient d'une session ? Un problème autre ?

    Si vous avez des idées je veux bien parce que là ...

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Hello

    Tu as pensé à vérifier le life time de ta session ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    session.cookie_lifetime = 0
    pour un cookie qui n'expire pas.

  3. #3
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Dans mon php.ini j'ai :
    session.cookie_lifetime = 0
    ça devrait suffire non ?

  4. #4
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Il est très difficile de te fournir une réponse fiable car les raisons peuvent multiples étant donné que la méthode que tu utilise n'est pas connue (puisque tu ne l'explique pas).

    Mais avec les infos que tu donnes, tu peux déjà essayé d'afficher le contenu de ta print_r($_SESSION) et de print_r($_COOKIE) pour voir ce qu'il se passe.

  5. #5
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Également vérifie l'expiration des sessions au niveau d'apache.

    Ce serait plus simple si tu nous donnais le contexte dans lequel tu travailles (OS, Serveur HTTP, version de PHP etc.)

    C'est peut être idiot mais vérifie bien qu'il n'y a pas un bout de code qui traine quelque part et qui ferme la session.

  6. #6
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Ah oui mince, oublié de donner les détails.
    Donc je suis sous EasyPHP 5.3.1.0, PHP 5, Windows XP.

    Pour me connecter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    session_start();
     
    $_SESSION['login'] = $login;
    Sinon pour les print_r :
    - le print_r($_SESSION) affiche la même chose sur les différents navigateurs.
    - le print_r($_COOKIE) affiche moins de valeurs sur Firefox que sur Chrome : j'ai deux valeurs [__utma] et [__utmz] en plus mais aucune idée de ce à quoi ça correspond

    Hum, j'y pense ... Est-ce qu'un "session_start()" en trop (par exemple un session_start() non nécessaire) pourrait faire casser une session et revenir au départ ?

    Pour l'expiration des sessions dans Apache, comment je le vois ?

    [EDIT] J'ai une page me permettant d'afficher les informations du compte sur lequel je m'authentifie. Quand je souhaite afficher celles-ci, je n'ai que des undefined, comme si mes valeurs de session avaient été supprimées. D'où le fait que je revienne ensuite sur l'authentification.
    J'ai donc ce cheminement :
    - authentification
    -> session et variables de session OK
    - clic sur une page
    -> destruction des variables de session
    - clic sur une autre page
    -> demande d'authentification car plus de variable de session

    Dans mon header, j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $(window).unload( function() {
    	$.ajax({
    		type: 'GET',
    		url: 'deconnexion.php',
    		success: function(html) {
    		}
    	});
    });
    Normalement, cela s'exécute quand on quitte le navigateur. Mais est-ce que sous Firefox et IE, c'est interprété comme 'on change de page' ?

    [EDIT 2] : le problème vient bien de mon dernier code. Donc maintenant, reste à savoir comment exécuter ma page de déconnexion quand je ferme le navigateur ! Si vous avez une idée ...

  7. #7
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Citation Envoyé par baggie Voir le message
    Donc maintenant, reste à savoir comment exécuter ma page de déconnexion quand je ferme le navigateur ! Si vous avez une idée ...
    Salut

    A priori, il n'y a pas de solution, sauf si c'est intentionnel de la part de l'utilisateur.
    Bouton " Me déconnecter", par exemple.

    Mais dans la majorité des cas, les visiteurs ferment tout simplement le navigateur.
    Ce qui a pour conséquence de brider toute action côté scripts.
    Plus de connexion = Plus d'interaction avec ton www.

  8. #8
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    As tu regardé onunload() ?

  9. #9
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Merci pour vos réponses.

    riete > ça ne fonctionne pas comme je voudrais, comme si ma page n'était pas lancée (deconnexion.php).

    alain31tl > j'ai bien un bouton de déconnexion donc si l'utilisateur clique dessus ce sera bon. Ce qui est dommage, c'est que ça fonctionnait bien avec Chrome, mais pas avec IE et Firefox

    A moins que vous ayez une autre solution pour pouvoir enregistrer la date du jour au moment où l'on quitte le web ? (pour qu'ensuite, à la prochaine reconnexion on obtienne la date de dernière connexion).

  10. #10
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Citation Envoyé par baggie Voir le message
    A moins que vous ayez une autre solution pour pouvoir enregistrer la date du jour au moment où l'on quitte le web ? (pour qu'ensuite, à la prochaine reconnexion on obtienne la date de dernière connexion).
    Celà revient precisemment à ce que je soulignais precedemment.
    Si on quitte le web, plus d'interaction, donc scripts inopérants.

    En revanche, tu peux toujours enregistrer une session et ses composants en base de données, ceci au moment de l'identification, ou/voire au fur et à mesure de la visite.

  11. #11
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    contente toi de donnée l'heure de la derniere fois que ton utilisateur a appelé une page sur ton site. ça suffira comme approximation.

  12. #12
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Sauf que l'heure je trouve ça un peu moins important

    Et si je fais deux champs dans ma base de données :
    - oldconnexion
    - newconnexion

    Quand je me connecte, j'enregistre la date du jour dans newconnexion, et la date qui était avant dans newconnexion, je la passe dans oldconnexion et j'affiche celle-ci.

    J'aurai bien ma date de dernière connexion du coup ?

    C'est tordu mais ça peut le faire ?

  13. #13
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Dans ce cas là et si celà te convient, utilise plutôt timestamp, bien plus précis.
    Enuite, c'est juste une histoire de comparaison.
    Si < ....
    Si > ....
    etc...

  14. #14
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Est-ce utile si je veux juste récupérer le jour, le mois et l'année ?

    Par contre, je dois bien garder les deux dates si je veux à chaque fois afficher l'ancienne date et non la nouvelle, non ?

  15. #15
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    L'un n'empêche pas l'autre.
    Tu peux utiliser timestamp pour réaliser ta comparaison.
    Et dans le même temps, conserver aussi les dates complétes en base de données.
    Soit olddate ou newdate.
    Timestamp, c'est juste pour te faciliter la tâche dans cette démarche.

  16. #16
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Je n'arrive pas à comprendre le but de ta démarche. Pourquoi veux tu que la session soit détruite quand l'utilisateur quitte le site ? Y a t'il une logique particulière de sécurité derrière qui pourrait être mise en place avec un configuration au niveau d'apache ?

    Généralement, on préfère mettre un time to live assez court à une session que l'on veut sécuriser (de l'ordre des 2 minutes comme chez free.fr par exemple).

  17. #17
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Hum, c'est pas mieux de détruire une session quand on quitte un navigateur ? Si par exemple, on n'est pas sur un ordi perso ? Après je peux me planter effectivement

  18. #18
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Citation Envoyé par baggie Voir le message
    Si par exemple, on n'est pas sur un ordi perso ?
    Un cookie est persistant sur un pc, tant que les temp ne sont pas effacés.
    Une session "PHP" a une durée de vie...relativement courte.

  19. #19
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Par contre, je dois bien garder les deux dates si je veux à chaque fois afficher l'ancienne date et non la nouvelle, non ?
    Ca dépend de quelle manière tu détecte que l'utilisateur se déconnecte.

    Admettons que tu adopte le principe qu'a donné Alain31tl, soit un bouton/lien de déconnexion (page deconnexion.php, comme pour ce forum, qui à mon sens est le moyen le plus fiable), et bien sa dernière connexion c'est celle ci, la déconnexion, c'est justement sa dernière action en temps qu'utilisateur connecté, après, elle ne le sera plus.
    C'est ça la réalité, non ?

    Pourquoi la fausser ?
    Pourquoi donc ce compliquer la vie d'enregistrer la date précédente ?

    D'ailleurs, c'est ainsi que fonctionne les sessions, il n'y a pas 2 dates. La date de dernière action c'est la date de dernière modification du fichier.

  20. #20
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    RunCodePhp

    J'ai répondu en fonction de la requête du moment et qu'il a formulée, c'est tout.
    Et je n'impose pas de méthode.
    Aprés tout, je ne connais pas ses besoins précis et les raisons rationnelles qui nécessitent cette élaboration...
    Et si tel était le cas, je répondrais peut-être differemment, pour ensuite développer plus en profondeur.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/03/2009, 11h04

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