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 :

Variables de sessions ne se chargent pas la première fois


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 8
    Par défaut Variables de sessions ne se chargent pas la première fois
    Bonjour à toutes et à tous,

    Tout d'abord, je m'excuse si mon problème est redondant et que j'ai loupé un post qui m'aurait permis d'avancer, mais je sort à l'instant de la FAQ.

    Je vais essayer d'être le plus clair possible.

    Je travail avec un template qui fonctionne de la manière suivante.
    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
     
    $fichier = fopen("patron.php" , "rb" ); 
    $html = fread($fichier, filesize("patron.php"));  
    fclose($fichier);
     
    // Là, le patron est chargé
     
    $fichier = fopen($fichier_contenu, "rb");
    $contenu = fread($fichier,filesize($fichier_contenu));
    fclose($fichier);
     
    // Et là, mon contenu est chargé
    //Il ne me reste plus qu'à remplacer les occurrences de [TITRE] et [CONTENU] par le contenu proprement dit.
    $html = ereg_replace("\[TITRE\]", $titre,$html);
    $pas = strpos($html, "[CONTENU]");
    echo substr($html,0,$pas);
    include($fichier_contenu);
    echo substr( $html, $pas + 9 );
    Tout ceci fonctionne, le problème n'ai pas là, mais je pense que cela a une importance.
    Il y a tout au début de mon patron un session_start(), il se retrouve donc sur toutes les pages.

    Mon problème est que lorsque j'arrive sur la page d'accueil, je me log, et arrive sur ma page perso (accueil.php -> login.php -> perso.php). Mais les variables de sessions précédement initialisées (dans login.php) sont vides . Je me déconnecte donc en indiquant au navigateur mon fichier qui fait le session_destroy(). (ben oui je ne propose le lien de déconnexion que si $_SESSION["connecte"] est initialisé ce qui n'est pas le cas.)
    Je me re-log avec les memes identifiants et la, tadammm! tout fonctionne.

    Ma question est donc la suivante ( pourquoi ça marche pas oui certes lol ) mais surtout comment se fait-ce que les variables ne puissent etre initialisées du premier coup ?

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 497
    Par défaut
    heu.. ton patron.php, il n'est pas executé par php ? il est juste lu par un autre script php.. et affiché ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 8
    Par défaut
    Oui oui c'est ça. patron.php n'est pas exécuter par le serveur

  4. #4
    Invité
    Invité(e)
    Par défaut
    Quel est ton environnement de développement? easyphp?

    Est que tu as des erreur dans l'error_log de ton serveur apache?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 497
    Par défaut
    Alors ton "session_start()" non plus n'est pas executé.. ? donc pas de variable de session accessible ?

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 8
    Par défaut
    Mygale1978 => Etant donné que ça fonctionnait en local, je suis passé au test en ligne, c'est la que sa bug. Version php du serveur 4.4.8.
    Du coup le fichier d'erreur je ne sais pas si je peux y avoir accès.

    zevince=>Effectivement ce que tu dis n'est pas bête du tout. mais comment expliquer qu'apres m'être logé une premiere fois (en ayant tout vide), m'être déco et m'être reloggé tout fonctionne ?

  7. #7
    Invité
    Invité(e)
    Par défaut
    Re,

    si tu dis que ça fonctionne en local mais pas sur l'autre serveur, c'est certainement une différence de configuration.

    Ce que tu peux déjà faire c'est placer un script avec une la fonction phpinfo();

    pour afficher la configuration sur ton serveur distant et la comparer avec celle de ton serveur local.

    Tu as un section "sessions" -> il faudrait déjà voir si tu as des différences à ce niveau-là.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 497
    Par défaut
    bonne question.. je ne sais pas..

    Mais essaye quand meme un session_start() et un print_r($_SESSION) dans ton script php, celui qui est executé, pas ton template.. et vois ce que ca donne !

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 8
    Par défaut
    Re,

    Mygale1978 => Je suis sur le coup là, je vais voir ce que je trouve

    Zevince => J'ai déja esseyé mais ça ne marche pas. Header already sent by ...

    En fait je fait un "sandwich" avec une tartine de patron.php du contenu.php en guise de garniture et la deuxième tranche de patron.php. Lol

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 8
    Par défaut
    Re bonjour tout le monde,

    Bon j'ai vérifié avec phpinfo() , pas de différences majeures.

    Pour le print_r($_SESSION), il m'affiche array(), la session est bel et bien vide, cette fois je n'ai plus de doutes

    je ne sais plus vraiment quoi faire, mais j'aimerais pourtant beaucoup résoudre ce problème. Si quelqu'un avait une idée quelle qu'elle soit, je prend

    Merci à tous de vous pencher sur mon problème tout de même

  11. #11
    Invité
    Invité(e)
    Par défaut
    Salut,

    Bon j'ai vérifié avec phpinfo() , pas de différences majeures
    toute différence même mineures peut avoir son importance.

    exemple:
    Si tu utilises la variable $titi comme variable super global au lieu $_POST['titi'] et que tu désactives register_globals (register_globals = off) $titi sera reconnue comme une variable normale et non plus comme une variable SUPER globale

    pourrais-tu afficher les paramètres qui diffèrent au niveau des session?

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 8
    Par défaut
    Re,

    Bien sûr.

    En Local :
    session.bug_compat_42 Off Off
    session.gc_divisor 1000 1000
    session.use_trans_sid 0 0

    Sur le serveur :
    session.bug_compat_42 On On
    session.gc_divisor 100 100
    session.use_trans_sid On On

    Voila, merci de prendre de ton temps pour moi au passage

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 8
    Par défaut
    Bon j'avance un petit peu, mais j'ai toujours le même soucis.
    Dans mon script j'affecte les variables de sessions avec un résultat de requête, de la façon suivante.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if($_SESSION["id"]=$enr->id&&$_SESSION["pseudo"]=$enr->pseudo&&$_SESSION["mdp"]=$enr->mdp&&$_SESSION["nom"]=$enr->nom&&$_SESSION["prenom"]=$enr->prenom&&$_SESSION["role"]=$enr->role&&$_SESSION["connect"]="oui")
    derrière pour vérifier j'ai fait un print_r($enr) mon tableau associatif qui contient le résultat de la requête SELECT * FROM users WHERE login=$login et mdp=$mdp.
    Et j'obtient ça :
    - Pour print_r($enr):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stdClass Object ( [id] => 67 [pseudo] => bob [nom] => bob [prenom] => thebuilder [sexe] => M [mdp] => 64a4e8faed1a1aa0bf8bf0fc84938d25 [mail] => witiger666@hotmail.fr [adresse] => 1932-09-10 [codep] => rue de la plop [ville] => 45860 [date] => 1985-08-09 [role] => 3 [valide] => 1 [avatar] => avatars/67.jpg [description] => bob The builder )
    - pour print_r($_SESSION) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Array ( [connect] => oui [role] => 1 [prenom] => 1 [nom] => 1 [mdp] => 1 [pseudo] => 1 [id] => 1 )
    Le problème étant un peu mieux cerné, si quelqu'un à une idée vis à vis de ça, qu'il n'ai pas peur de s'exprimer, je suis prêt à tester n'importe quelle solution

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 8
    Par défaut
    Bonjour à tous ceux qui passeront par ici.

    J'avance petit à petit. J'arrive maintenant à charger mes variables de sessions, l'erreur est pour moi inexplicable, alors si quelqu'un a une explication...
    Apparemment, le serveur n'aime pas que les variables de session porte le même nom que la variable qu'on leur affecte.
    $_SESSION["pseudo"] = $enr->pseudo, ça il n'aime pas, j'ai donc changé en
    $_SESSION["pseudonyme"] = $enr-> pseudo et du coup, mes variables de session sont bien chargés.
    Mais un autre problème m'est apparu, je perds ces variables si bien chargées après un header ...
    Bien que j'ai un session_start() haut début de la page, sans rien devant (espace etc ...) et sans utiliser le template...
    J'en perd mon latin

Discussions similaires

  1. Réponses: 10
    Dernier message: 16/10/2013, 19h51
  2. Réponses: 4
    Dernier message: 21/09/2013, 19h06
  3. Le passage de ma variable de session (PHP) ne fonctionne pas
    Par beegees dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 27/03/2009, 15h10
  4. variables de sessions qui ne restent pas
    Par seb67110 dans le forum Langage
    Réponses: 2
    Dernier message: 02/05/2007, 12h54
  5. variables de session qui ne passent pas
    Par cels dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 28/11/2006, 11h46

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