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 :

Disparition session en changeant de page


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de scrouet
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 280
    Points : 105
    Points
    105
    Par défaut Disparition session en changeant de page
    Bonjour.

    Je rencontre un petit problème de "disparition" de session.
    Lorsque l'utilisateur tente de se connecter à mon site en validant le formulaire de connexion, le script récupère les crédentiels, les vérifie en interrogeant la base de données, démarre la session (session_start()), renseigne les variables de session, puis force une redirection vers une page interne (avec header()). Celle-ci lance une mini fonction de vérification des variables de session pour s'assurer que l'utilisateur est bien authentifié et que sa session n'a pas expiré. Là, (mauvaise) surprise, les variables de session sont non définies (isset renvoie false).
    Ce problème n'existe que lorsque le site est déployé chez mon hébergeur et pas sur mon environnement de développement personnel. Donc pas d'erreur du type oubli d'un session_start() au début de la seconde page. Je suppose donc que ça vient d'une différence de paramétrage de PHP. Par exemple, register_globals est positionné à On chez mon hébergeur. Mais cela peut-il venir de là dans la mesure où je ne peux pas avoir écrasé accidentellement une variable de session comme $_SESSION['Utilisateur']['Id'] ?

    Avez-vous des idées ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Regarde si l'id de session est le meme apres la redirection.
    Si ce n'est pas le cas, essai de passer le SID dans l'url de ta redirection.

  3. #3
    Membre régulier Avatar de scrouet
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 280
    Points : 105
    Points
    105
    Par défaut
    Effectivement, l'ID change. A quoi cela peut-il être dû ?
    Je suis d'autant plus surpris que j'ai en fait deux sous-sites avec authentification sur mon site principal et que l'un fonctionne bien. Cela peut-il être lié au moment où session_start() est appelée ?
    Je m'explique. Dans les deux cas, session_start() est bien appelée avant toute écriture de page Web. Pour le sous-site qui fonctionne, l'appel a lieu en début de script, quelle que soit la page appelée, juste après les "require" et les initialisations de variables globales. En revanche, pour le site qui ne fonctionne pas, l'appel a lieu après vérification de l'utilisateur dans le script d'authentification.

    Bon, même en déplaçant les session_start() en début de script, ça ne marche pas.

    Au fait, pour démarrer ou rappeler une session, j'utilise les deux lignes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    session_name(NOM_SESSION);
    session_start();
    où NOM_SESSION est une constante définie dans un fichier de configuration inclus en tout début de script par un "require".

    Et pour afficher l'identifiant de session je passe par "session_id()". C'est la valeur renvoyée par cette fonction qui change d'un script à l'autre.

    Est-ce que c'est bon ou est-ce que je fais déjà une erreur à ce niveau ?

  4. #4
    Membre régulier Avatar de scrouet
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 280
    Points : 105
    Points
    105
    Par défaut
    Le problème venait de mon hébergeur, OVH, qui fait du clustering sur ses serveurs mutualisés. Solution : enregistrer les données de sessions dans un répertoire spécifique du site.

    Ce qui me surprend quand même un peu, c'est que l'autre sous-site ne rencontre pas le même problème.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par scrouet Voir le message
    Ce qui me surprend quand même un peu, c'est que l'autre sous-site ne rencontre pas le même problème.
    Oh moi j'aimes pas ce terme sous-site. je t'explique, quand tu as un site
    sonurl_xxxxxxxxxxx/ whois te dira que son DNS est xxx.yyy....etc...

    Imagine que tu te fais unautre site
    sonurl2_yyyyy/ whois te dira que son DNS est ddd.yyy....etc...

    mais imagines que le second pointe sur un répertoire du premier
    sonurl_xxxxxxxxxxx/le deuxieme/
    on va le nommé sous-site !

    C' est cela oui ou non

    Alors retiens cela,
    si je vais sur le premier et me connectes avec une belle session un beau cookies de données si dans l'un des menus on me propose
    le second site avec un lien sonurl_xxxxxxxxxxx/le deuxieme/
    je gardes ma session et mes cookies

    si le lien proposes sonurl2_yyyyy/
    Je vais bien au même endroit, mais je perds session et cookies

  6. #6
    Membre régulier Avatar de scrouet
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 280
    Points : 105
    Points
    105
    Par défaut
    Dans mon cas, j'appelle sous-sites des URL de la forme http://sous-site.site-principal.ext. Mes deux sous-sites ont chacun leurs cookies, le site principal n'en utilisant pas lui-même.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/01/2008, 16h46
  2. Comment gérer une session par cookie sur page asp
    Par alexsolex dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/10/2007, 22h30
  3. Variable de session dans toute les pages
    Par Interface dans le forum Langage
    Réponses: 3
    Dernier message: 03/10/2007, 13h02
  4. $dispo[0] et session pour afficher sur page suivante?
    Par oceane751 dans le forum Langage
    Réponses: 2
    Dernier message: 13/04/2006, 04h10
  5. Réponses: 4
    Dernier message: 03/04/2006, 16h40

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