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 :

variable de session testée à false alors que true est prévu


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut variable de session testée à false alors que true est prévu
    Bonjour,

    le titre n'indique pas grand-chose mais à vrai dire, ça fait des heures que je tourne sur le problème sans y voir clair.
    Voici le problème :
    J'ai un formulaire d'authentification qui appelle le fichier authenticate.php. Dans ce fichier, j'interroge une bdd (avec PDO) et si les identifiants sont trouvés, la variable $auth est mise à true, sinon à false. A la fin : $_SESSION['auth']=$auth; puis une redirection :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    header ("Location: $_SERVER[HTTP_REFERER]" );
     exit();
    Dans mon test, la redirection se fait sur le fichier index.inc.php et dans ce fichier, on teste la variable de session :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (isset($_SESSION['auth']))
    {var_dump($_SESSION['auth']);if ($_SESSION["auth"]){
    etc}}
    Mon souci est qu'avant de faire la redirection, $auth est à true, et dans index.inc.php à false. Je ne sais pas comment debogger cela...

  2. #2
    Membre émérite Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Par défaut
    Salut,

    il me semble avoir déjà vu cela, et, de mémoire (donc pas certain), j'étais passé par la fonction session_write_close() (http://php.net/manual/fr/function.se...rite-close.php)

    Je t'avoue que je ne suis pas du tout sûre de ça, mais ça ne coûte rien d'essayé

  3. #3
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Est-ce que ce ne serait pas un session_start() qui manquerait ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    session_start();
    $_SESSION['auth']=false;
    header ("Location: test9143b.php" );
    exit();

    test9143b.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
    $_SESSION['auth']=true;
    header ("Location: test9143c.php" );
    exit();

    test9143c.php => affiche bool(false)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    session_start();
    if (isset($_SESSION['auth']))
    {
     var_dump($_SESSION['auth']);
    }
    Si je rajoute session_start(); dans test9143b.php alors test9143c.php affiche bool(true)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    session_start();
    $_SESSION['auth']=true;
    header ("Location: test9143c.php" );
    exit();

  4. #4
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Merci pour vos réponses, mais sachez que ce n'est pas résolu.

    A priori, ce n'est pas un problème de session_start manquant, sachant que toutes mes pages ont cette structure (conseil de jreaux62) :
    Code php : 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
     
    <?php 	require_once(dirname(__DIR__).'\_includes\html0-topPHP.php'); // INIT + FONCTIONS et autres config en PHP
    // -----------------------------------------------------------
    // page DEFAUT
    // -----------------------------------------------------------
     	// ICI, on peut mettre des traitements PHP,....  SPECIFIQUE A LA PAGE
    ?>
    <?php 	require_once(dirname(__DIR__).'/_includes/html1-debut.php'); // contient le DEBUT du code HTML, le contenu de <head> SANS la balise </head> ?>
     
    <?php 	// ICI, on peut mettre des scripts, CSS SPECIFIQUE A LA PAGE (donc AVANT la  balise </head>)?>
     
    <?php 	require_once(dirname(__DIR__).'/_includes/html2-milieu.php'); // contient la balise </head>et le DEBUT du <body>, A PARTIR DE la balise </head> ?>
     
    <?php 
     
    	echo "squelette<br/>";
    ?>	
     
    <?php 	require_once(dirname(__DIR__).'/_includes/html3-fin.php'); // contient la FIN du code HTML, jusqu'au </body></html> ?>
    et que html0-topPHP.php contient un session_start. De plus, ma recherche m'a fait trouver cette très vieille discussion dont j'ai tenu compte :

    html0-topPHP.php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php 	
    error_reporting(E_ALL ^ (E_NOTICE|E_WARNING|E_DEPRECATED));
    header('Content-type: text/html; charset=UTF-8');
    if(!isset($_SESSION['flag'])) {
    session_start();
    $_SESSION['flag'] = true;
    } 
    ...
    ?>

    J'ai aussi rajouté session_write_close en fin de mes scripts authenticate.php et index.inc.php mais le problème reste...

  5. #5
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Je mettrais le session_start() avant le header.

  6. #6
    Membre émérite Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Par défaut
    Petite question qui me vient, tu ne passerai pas d'une URL en http://www.domaine.tld vers http://domaine.tld ou inversement ?

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

Discussions similaires

  1. File.exists() est false, alors que je m'attends à ce qu'elle soit true
    Par domxaline dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 19/01/2014, 13h20
  2. [Débutant]Test lancé alors que je ne veux pas
    Par youkoun dans le forum Maven
    Réponses: 2
    Dernier message: 20/12/2010, 11h55
  3. Réponses: 4
    Dernier message: 29/05/2010, 00h22
  4. Réponses: 4
    Dernier message: 17/09/2008, 13h05
  5. Réponses: 7
    Dernier message: 30/03/2007, 14h58

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