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 :

var_dump non affiché


Sujet :

Langage PHP

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 828
    Points
    5 828
    Billets dans le blog
    1
    Par défaut var_dump non affiché
    Bonjour,

    j'ai un code contenant un var_dump puis une redirection via header("Location...Je suis sûr qu'on y passe vu que la redirection a lieu. Néanmoins, le var_dump n'est pas affiché. Je sais que normalement, aucun affichage ne doit être effectué avant un header. Est-ce que ça vient de ça ?

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <?php 
     
    session_start();
    $pdo = require('db_mysql.php');
     
     
    if (isset($_POST['uname']) && isset($_POST['password'])) {
     
    	$uname = $_POST['uname'];
    	$pass = $_POST['password'];
            var_dump($_POST);
     
    	if (empty($uname)) {
    		header("Location: passw.php?error=User Name is required");
    	    exit();
    	}else if(empty($pass)){
            header("Location: passw.php?error=Password is required");
    	    exit();
    	}else{
    		$sql = "SELECT * FROM users WHERE user_name=:username AND password=:password";
     
            $smt = $pdo->prepare($sql);
            $smt ->execute(array(':username' => $uname, ':password' => $pass));
            $row = $smt->fetch(PDO::FETCH_ASSOC); var_dump($row);
     
     
    		if ($row) {
                	$_SESSION['user_name'] = $row['user_name'];
                	$_SESSION['name'] = $row['name'];
                	$_SESSION['id'] = $row['id'];
                	header("Location: acc.php");
    		        exit();
     
    		} else{
    			header("Location: passw.php?error=Incorrect User name or password");
    	        exit();
    		}
    	}
     
    } else{
    	header("Location: passw.php");
    	exit();
    }

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 333
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 333
    Points : 15 677
    Points
    15 677
    Par défaut
    votre serveur (côté php ou apache) a peut-être un cache qui fait que la fonction "header" peut fonctionner correctement.
    essayez de mettre un "exit" après le "var_dump" pour voir ce qu'il se passe.

  3. #3
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Si il y a une redirection, c'est normal qu'on ne voit pas le var_dump() puisqu'on quitte la page !!!!

    mettre un die() après le var_dump() pour arrêter le script

  4. #4
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 785
    Points : 3 048
    Points
    3 048
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    j'ai un code contenant un var_dump puis une redirection via header("Location...
    N'avais-tu pas investi du temps à apprendre xdebug ? Dans ton éditeur préféré, tu pourrais faire du debugging step-by-step; 1 million de fois mieux que des echos par ici et des var_dump par là.

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 828
    Points
    5 828
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    Si il y a une redirection, c'est normal qu'on ne voit pas le var_dump() puisqu'on quitte la page !!!!
    Oui, c'est parfaitement logique. Pourquoi n'y ai-je pas pensé ? Si je mets un exit() derrière le var_dump, je le vois...

    Citation Envoyé par cavo789 Voir le message
    N'avais-tu pas investi du temps à apprendre xdebug ? Dans ton éditeur préféré, tu pourrais faire du debugging step-by-step; 1 million de fois mieux que des echos par ici et des var_dump par là.
    Exact, c'est bien mieux...si ça marche. Et quand le script ne s'arrête pas sur les points d'arrêt, je fais du très basique.

  6. #6
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 785
    Points : 3 048
    Points
    3 048
    Par défaut
    Si tu me dis que parfois cela fonctionne (ce qui veut donc dire que Xdebug est correctement configuré) alors il n'y a aucune raison que le débogueur ne s'arrête pas. Place alors d'autres points, aux bons endroits 😉

    Le souci des echo, var_dump, exit, ce que tu peux les oublier dans le code et hop, un bug silencieux.

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 828
    Points
    5 828
    Billets dans le blog
    1
    Par défaut
    Sauf qu'il y a quelques semaines, je travaillais sur un autre PC, mais là, ça doit pas être bon...

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 828
    Points
    5 828
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par cavo789 Voir le message
    Le souci des echo, var_dump, exit, ce que tu peux les oublier dans le code et hop, un bug silencieux.
    Pour contrer ce problème, j'utilise la fonction (ou méthode) suivante :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     static public function debug($location, $var)
        {
            //exemple d'appel : UtilFct::debug("Record.php 162 data deb de analyze_ticket ",self::$data);
            echo "<br/>".(is_string($location))?$location:'';//la variable $location sert à indiquer le nom
            // du fichier et le numéro de la ligne où on a appelé la fonction car quand on en a plus besoin, on sait plus où
            // on l'a placé !
            echo "<br/><pre>";
            var_dump($var);
            echo "</pre><br/>";
        }

  9. #9
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 785
    Points : 3 048
    Points
    3 048
    Par défaut
    Bonjour Laurent

    Tu risques toujours d'oublier un appel à ta fonction debug()... Tu l'as mis le temps de faire du debugging puis tu as été interrompu (ou tu es passé à autre chose) et, voilà, du code debug est resté en place. Pas top.

    Note: je vois dans ta fonction (bravo pour le commentaire) que tu lui passes "qui à appelé la fonction". Pour cela, tu peux utiliser debug_backtrace (voir https://www.php.net/manual/en/functi...-backtrace.php) qui fait cela nativement. Cette fonction retourne un array; il suffit que tu affiches p.ex. les trois premiers éléments du tableau pour savoir qui a appelé la fonction ... qui elle-même a appelé ta fonction debug. C'est ce qu'on nomme le "trace" de PHP et c'est très pratique; exactement pour ce besoin précis.

    (reste que xdebug et du debugging pas à pas est la meilleure option ;-))

    Bonne journée.

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

Discussions similaires

  1. [JMenuBar] Menu non affiché
    Par volontier dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 23/05/2006, 11h15
  2. [APACHE 2] Images / Css Non affichée
    Par djshaker dans le forum Apache
    Réponses: 1
    Dernier message: 22/02/2006, 15h26
  3. [DoubleBuffering][JMenu] menu non afficher
    Par estacado dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 10/01/2006, 08h09
  4. [Quick Report] Valeur d'un champ existante mais non affichée
    Par navis84 dans le forum Bases de données
    Réponses: 1
    Dernier message: 31/03/2005, 09h15
  5. [CR 9] Mise en forme non affichée when null
    Par Yorglaa dans le forum Formules
    Réponses: 2
    Dernier message: 28/06/2004, 17h27

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