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 :

[Cookies] Perte de session au changement d'arborescence


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de lelapinou
    Homme Profil pro
    Inscrit en
    Avril 2003
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2003
    Messages : 96
    Points : 81
    Points
    81
    Par défaut [Cookies] Perte de session au changement d'arborescence
    Salut à tous. Mon soucis est très bizarre.
    Alors voilà l'explication:
    4 pages :
    - ../menu_bas.php
    - ../panier/articles.php
    - ../panier/bande_collections.php
    - ../panier/liste_cartes.php
    La page menu_bas, est une page qui est utilisée dans toutes les pages du site, par un include($_SESSION['racine'].'menu_bas.php').
    La page ARTICLES, contient LISTE_CARTES, BANDE_COLLECTION et MENU_BAS, via des includes.

    Dans ma page index, je fais l'ouverture d'une session avec session_start(), jusqu'ici rien de phénoménal. Ainsi la page menu reprend une supervariable $_SESSION['racine'], pour les a href qu'elle comporte.
    Mon problème est que lorsque j'utilise la page ARTICLES.php, mes supervariables sont reconnues dans les pages ARTICLES,BANDE et LISTE, par contre totalement inexistantes dans MENU.
    Je pense qu'il y a un rapport avec l'arborescence, car MENU n'appartient pas au même répertoire que les autres.
    Merci de me donner vos idées.

  2. #2
    Inscrit

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Points : 909
    Points
    909
    Par défaut
    Interressant, verifiez le "path" (chemin) du cookie de session grace a votre client http(s) (navigateur).

  3. #3
    Membre régulier Avatar de lelapinou
    Homme Profil pro
    Inscrit en
    Avril 2003
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2003
    Messages : 96
    Points : 81
    Points
    81
    Par défaut Path vide
    Après vérif du path dans mon browser, il est vide (path = /).
    Par contre j'ai copié le fichier menu_bas.php dans le même répertoire que lesautres fichiers et cela fonctionne parfaitement

  4. #4
    Inscrit

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Points : 909
    Points
    909
    Par défaut
    Après vérif du path dans mon browser, il est vide (path = /).
    Dans quel cas ? Lorsque le cookie est enregistre dans le sous-dossier ?

  5. #5
    Membre régulier Avatar de lelapinou
    Homme Profil pro
    Inscrit en
    Avril 2003
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2003
    Messages : 96
    Points : 81
    Points
    81
    Par défaut c à nouveau
    je reviens à la charge, au cas où une âme charitable pourrais avoir une réponse.
    J'ai une variable de session instancée à la connexion du membre, qui n'est pas connue dans un fichier se trouvant sur un autre répoertoire.
    Voici le source dur fichier menus.php

    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
     
    <?
    echo 'niveau_membre='.$_SESSION['membre_niveau'];
    switch ($_SESSION['membre_niveau'])
    {
    case 1:
    	echo '<SCRIPT LANGUAGE="JavaScript" SRC="'.$_SESSION['racine'].'include/menu_admin.js"></SCRIPT>';
    	break;
    case 2:
    	echo '<SCRIPT LANGUAGE="JavaScript" SRC="'.$_SESSION['racine'].'include/menu_dirigeant.js"></SCRIPT>';
    	break;
    case 3:
    	echo '<SCRIPT LANGUAGE="JavaScript" SRC="'.$_SESSION['racine'].'include/menu_membre.js"></SCRIPT>';
    	break;	
    default:
    	echo '<SCRIPT LANGUAGE="JavaScript" SRC="'.$_SESSION['racine'].'include/menu_principal.js"></SCRIPT>';
    }
     
     
    ?>
    ce fichier est introduit dans mes divers fichiers grace à un include, c'est pourquoi je n'ai pas de session_start(), mais même avec un session_start() cela ne fonctionne pas. Sur le echo , ma variable est vide, alors que sur une page, à la racine, aucun soucis de variable. Il y a t il un soucis de portabilité des variables globales que j'ignore. Je n'ai rien trouvé dans mes recherches.
    Merci

  6. #6
    Inscrit

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Points : 909
    Points
    909
    Par défaut
    Cette fonction demarre la session si necessaire, peut etre pourriez-vous l'utiliser ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /**
     * Function to start the session if required.
     */
    function startSession()
    {
      global $_SESSION;
      if (!isset($_SESSION)&&!$_SESSION)
      {
        session_start();
      }
    }

  7. #7
    Membre régulier Avatar de lelapinou
    Homme Profil pro
    Inscrit en
    Avril 2003
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2003
    Messages : 96
    Points : 81
    Points
    81
    Par défaut sessions_start();
    j'avais essayé en insérant le session_start() et j'avais le message d'erreur disant que ma session était déjà lancée et que je ne pouvais en lancer plusieurs.
    Je suis super emmm.... car cela m'oblige à copier mon code sur toutes les pages à la place du include.

  8. #8
    Inscrit

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Points : 909
    Points
    909
    Par défaut
    Alors il faudra probablement poster plus de code pour une reponse precise...

  9. #9
    Membre régulier Avatar de lelapinou
    Homme Profil pro
    Inscrit en
    Avril 2003
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2003
    Messages : 96
    Points : 81
    Points
    81
    Par défaut Quelques lignes de code
    Après mon log,j'ai un header sur ma page membre.php
    dont voici le début:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?
     
    session_start();
    include('include/config.inc');
     
    if (!isset($_SESSION['membre_login'])) {
        // si ce n'est pas le cas, on le redirige vers l'accueil
        header ('Location: index.php');
        exit();
    }
    Voici comment je veux intégrer mon menu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    .... code php ....
    <td width="242" height="100%" valign="top" background="images/index_24.gif">'.include('include/menus.php').'</td>';
    Voici le contenu de ma page include/menus.php
    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
     
    <?
    session_start();
     
    switch ($_SESSION['membre_niveau'])
    {
    case 1:
    	echo '<SCRIPT LANGUAGE="JavaScript" SRC="'.$_SESSION['racine'].'include/menu_admin.js"></SCRIPT>';
    	break;
    case 2:
    	echo '<SCRIPT LANGUAGE="JavaScript" SRC="'.$_SESSION['racine'].'include/menu_dirigeant.js"></SCRIPT>';
    	break;
    case 3:
    	echo '<SCRIPT LANGUAGE="JavaScript" SRC="'.$_SESSION['racine'].'include/menu_membre.js"></SCRIPT>';
    	break;	
    default:
    	echo '<SCRIPT LANGUAGE="JavaScript" SRC="'.$_SESSION['racine'].'include/menu_principal.js"></SCRIPT>';
    }
     
    ?>
    et voici ce que je suis obligé de faire pour que ça fonctionne:
    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
     
    .... code php ....
    <td width="242" height="100%" valign="top" background="images/index_24.gif">
    switch ($_SESSION['membre_niveau'])
    {
    case 1:
    	echo '<SCRIPT LANGUAGE="JavaScript" SRC="'.$_SESSION['racine'].'include/menu_admin.js"></SCRIPT>';
    	break;
    case 2:
    	echo '<SCRIPT LANGUAGE="JavaScript" SRC="'.$_SESSION['racine'].'include/menu_dirigeant.js"></SCRIPT>';
    	break;
    case 3:
    	echo '<SCRIPT LANGUAGE="JavaScript" SRC="'.$_SESSION['racine'].'include/menu_membre.js"></SCRIPT>';
    	break;	
    default:
    	echo '<SCRIPT LANGUAGE="JavaScript" SRC="'.$_SESSION['racine'].'include/menu_principal.js"></SCRIPT>';
    }
    </td>';
    Si d'autres précisions sont nécessaires.... je suis plusque dispo

  10. #10
    Membre régulier Avatar de lelapinou
    Homme Profil pro
    Inscrit en
    Avril 2003
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2003
    Messages : 96
    Points : 81
    Points
    81
    Par défaut résolu, mais je ne sais pas pourquoi
    J'ai résolu le problème mais je ne comprend toujours pas le pourquoi du comment.
    J'ai en effet créé un fichier pour tester toutes mes variables de session, et elles s'affichaient toutes, alors j'ai supprimer le fichier incriminé et je l'ai re-créé, pouf, ça fonctionne.
    Ne me demandez pas pourquoi, je n'en sais rien. Je serais tenter d'appeler Mulder & Scully, mais suis sûr qu'ils ont autre chose à faire.

    Merci de votre intervention!

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

Discussions similaires

  1. [Cookies] Perte de session selon frame
    Par johweb dans le forum Langage
    Réponses: 2
    Dernier message: 25/01/2008, 08h12
  2. [Cookies] Perte d'index dans ma session
    Par crashyear dans le forum Langage
    Réponses: 3
    Dernier message: 20/12/2007, 15h11
  3. [Cookies] Perte de session sous IE
    Par Hayabusa dans le forum Langage
    Réponses: 5
    Dernier message: 31/10/2006, 23h54
  4. Réponses: 3
    Dernier message: 01/08/2006, 13h42
  5. Réponses: 2
    Dernier message: 05/12/2005, 11h02

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