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

PHP & Base de données Discussion :

erreur bizarre variable undefined et la non lecture d'une requete


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    108
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 108
    Par défaut erreur bizarre variable undefined et la non lecture d'une requete
    je suis entrain de récupérer la saisie de champs d'un formulaire et leur effectuer des tests avant de les insérer dans ma base,
    mon problème est avec le mot de passe (chiffré avec l’algorithme md5)
    voici le script
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    if(isset($_POST['passe_enc']))
    	{
    		$passe_enc=$_POST['passe_enc'];
    $nouv_passe=$_POST['nouv_passe'];
    $nouv_passe2=$_POST['nouv_passe2'];
     
     
    	if(!$nouv_passe || !$nouv_passe2 || strlen($nouv_passe) < 5)
    	{
    	echo'Votre mot de passe n\'est pas le meme que sa confirmation.<br /><a href="profil.php" onClick="history.back()">Retour</a>';
    	}
    if($nouv_passe!=$nouv_passe2)
    	{
    	echo'Votre mot de passe n\'est pas le meme que sa confirmation.<br /><a href="profil.php" onClick="history.back()">Retour</a>';
    	return FALSE;
    	}
    	$passe_enc=md5($passe_enc);
    $reponse_passe=mysql_query("SELECT * FROM client WHERE mot_de_passe='$passe_enc' AND session='$session'") or die ('Erreur : '.mysql_error());	
    //verification si mdp valide
     
    $test_mdp=mysql_fetch_array($reponse_passe);
    $ancien_mdp=$test_mdp['mot_de_passe'];
    echo''.$ancien_mdp;
    echo"<br>";
    echo''.$pass_enc;
    if($passe_enc!==$ancien_mdp)
    {
    	echo'L\'ancien mot de passe n\'est pas correct.<br /><a href="profil.php" onClick="history.back()">Retour</a>';
    	return FALSE;
    	}
    voici le message d'erreur qui s'affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Notice: Undefined variable: pass_enc in C:\Program Files\EasyPHP-5.3.6.0\www\jugurtha international\dynamiques\dynamique_inscription2.php on line 43
    L'ancien mot de passe n'est pas correct.
    Retour
    la ligne 43 est la ligne ou il y a
    je ne comprends pas pourquoi il affiche cette erreur undifined et pourquoi il affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L'ancien mot de passe n'est pas correct.
    et ça s'affiche même si la saisie de mon mot de passe est juste,
    merci pour votre aide

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    vérifie toujours les valeurs
    ps : belle injection SQL au passage

  3. #3
    Membre confirmé
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    108
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 108
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    vérifie toujours les valeurs
    ps : belle injection SQL au passage
    j'ai ajouté var_dump($_POST);
    et le problème persiste toujours, et n'oubliez pas svp que $pass_enc n'est pas une variable post, et que j'ai pas eu de problème avec les variables post traités auparavant (j'ai aussi une dizaine de variables post que j'ai pas transcris dans le script parce que je pense c inutile.)
    merci pour votre aide

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    relis bien ton code, le $pass_enc est définie nul part quand il n'y a pas de poste
    je te conseil de séparer ton code en plusieurs fichiers

  5. #5
    Membre confirmé
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    108
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 108
    Par défaut le problème persiste après le passage par la fonction md5 et la requête
    re
    lisez bien mon script au debut la variable $pass_en existe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if(isset($_POST['passe_enc']))
    	{
     
    var_dump($_POST);
    		$passe_enc=$_POST['passe_enc'];
    		echo''.$passe_enc;
    $nouv_passe=$_POST['nouv_passe'];
    $nouv_passe2=$_POST['nouv_passe2'];
    et quand j'ai utilisé au debut du script ça fonctionne sans probleme
    c'est après le passage par la fonction md5 puis la requête que mon problème bizarre apparait...
    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
    21
    22
    23
    	if(!$nouv_passe || !$nouv_passe2 || strlen($nouv_passe) < 5)
    	{
    	echo'Votre mot de passe n\'est pas le meme que sa confirmation.<br /><a href="profil.php" onClick="history.back()">Retour</a>';
    	}
    if($nouv_passe!=$nouv_passe2)
    	{
    	echo'Votre mot de passe n\'est pas le meme que sa confirmation.<br /><a href="profil.php" onClick="history.back()">Retour</a>';
    	return FALSE;
    	}
    	$passe_enc=md5($passe_enc);
    $reponse_passe=mysql_query("SELECT * FROM client WHERE mot_de_passe='$passe_enc' AND session='$session'") or die ('Erreur : '.mysql_error());	
    //verification si mdp valide
     
    $test_mdp=mysql_fetch_array($reponse_passe);
    $ancien_mdp=$test_mdp['mot_de_passe'];
    echo''.$ancien_mdp;
    echo"<br>";
    echo''.$pass_enc;
    if($passe_enc!==$ancien_mdp)
    {
    	echo'L\'ancien mot de passe n\'est pas correct.<br /><a href="profil.php" onClick="history.back()">Retour</a>';
    	return FALSE;
    	}
    ni ni ne fonctionnent et ça affiche l'erreur déjà citée

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    mais non, et le var_dump c'est a mettre au tout début de ton script...
    envoie ton code en entier et indenter stp

  7. #7
    Membre confirmé
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    108
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 108
    Par défaut voici mon script en entier et voici ce qui s'affiche
    ceci est le script en entier
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    <?php
    session_start();
    var_dump($_POST);
    include("connect.php");
    $nummobtel=$_POST["nummobtel"];
    $numfixtel=$_POST["numfixtel"];
    $numFax=$_POST["numFax"];
    $frmdelivAdress=$_POST["frmdelivAdress"];
    $nomvilleliv=$_POST["nomvilleliv"];
    $codepostvilleliv=$_POST["codepostvilleliv"];
    $livCountry=$_POST["livCountry"];
    $factAdress=$_POST["factAdress"];
    $factville=$_POST["factville"];
    $codepostvillefact=$_POST["codepostvillefact"];
    $factCountry=$_POST["factCountry"];
    $clientEmail=$_POST["clientEmail"];
    $session=$_SESSION["session"];
    //récupération du formulaire
    $clientEmail=formulaires($_POST['clientEmail']);
    if(isset($_POST['passe_enc']))
    	{
     
     
    			$passe_enc=$_POST['passe_enc'];
    			echo''.$passe_enc;
    			$nouv_passe=$_POST['nouv_passe'];
    			$nouv_passe2=$_POST['nouv_passe2'];
     
     
    	if(!$nouv_passe || !$nouv_passe2 || strlen($nouv_passe) < 5)
    	{
    	echo'Votre mot de passe n\'est pas le meme que sa confirmation.<br /><a href="profil.php" onClick="history.back()">Retour</a>';
    	}
    	if($nouv_passe!=$nouv_passe2)
    	{
    	echo'Votre mot de passe n\'est pas le meme que sa confirmation.<br /><a href="profil.php" onClick="history.back()">Retour</a>';
    	return FALSE;
    	}
    	$passe_enc=md5($passe_enc);
    	$reponse_passe=mysql_query("SELECT * FROM client WHERE mot_de_passe='$passe_enc' AND session='$session'") or die ('Erreur : '.mysql_error());	
    //verification si mdp valide
     
    	$test_mdp=mysql_fetch_array($reponse_passe);
    	$ancien_mdp=$test_mdp['mot_de_passe'];
    	echo''.$ancien_mdp;
    	echo"<br>";
    	echo''.$pass_enc;
    	if($passe_enc!==$ancien_mdp)
    	{
    	echo'L\'ancien mot de passe n\'est pas correct.<br /><a href="profil.php" onClick="history.back()">Retour</a>';
    	return FALSE;
    	}
    	else
    	{
    	$nouv_passe=md5($nouv_passe);
    		mysql_query("UPDATE client SET mot_de_passe='$nouv_passe', numero_telephone_mobile='$nummobtel', 	numero_telephone_fixe='$numfixtel',numero_fax='$numFax',adresse_mail='$clientEmail', adresse_facture_client='$factAdress', ville_facture='$factville',code_postale_facture='$codepostvillefact',pays_facture='$factCountry',adresse_livraison_client='$frmdelivAdress',ville_livraison='$nomvilleliv',code_postale_livraison='$codepostvilleliv',pays_livraison='$livCountry' WHERE session='$session'") or die ('Erreur : '.mysql_error());
    	mysql_close();
    	}
     
    mysql_query("UPDATE client SET numero_telephone_mobile='$nummobtel', 	numero_telephone_fixe='$numfixtel',numero_fax='$numFax',adresse_mail='$clientEmail', adresse_facture_client='$factAdress', ville_facture='$factville',code_postale_facture='$codepostvillefact',pays_facture='$factCountry',adresse_livraison_client='$frmdelivAdress',ville_livraison='$nomvilleliv',code_postale_livraison='$codepostvilleliv',pays_livraison='$livCountry' WHERE session='$session'") or die ('Erreur : '.mysql_error());
    mysql_close();
    header("location: /jugurtha international/commande-recap.php?action=ajout&amp;l=LIBELLEPRODUIT&amp;q=QUANTITEPRODUIT&amp;p=PRIXPRODUIT");	
    }
    ?>
    et ceci est ce qui s'affiche
    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
    21
    22
    23
    array
      'nummobtel' => string '7414151' (length=7)
      'numfixtel' => string '714785145' (length=9)
      'numFax' => string '71458962' (length=8)
      'frmdelivAdress' => string 'rue devid ville' (length=15)
      'nomvilleliv' => string 'tunis' (length=5)
      'codepostvilleliv' => string '2014' (length=4)
      'livCountry' => string '-1' (length=2)
      'factAdress' => string 'rue devid ville' (length=15)
      'factville' => string 'tunis' (length=5)
      'codepostvillefact' => string '1002' (length=4)
      'factCountry' => string '-1' (length=2)
      'clientEmail' => string 'master@gmail.com' (length=16)
      'passe_enc' => string 'bolhich1' (length=8)
      'nouv_passe' => string 'bbbbbb' (length=6)
      'nouv_passe2' => string 'bbbbbb' (length=6)
      'envoieformu' => string 'envoyer' (length=7)
     
    bolhich1
     
    Notice: Undefined variable: pass_enc in C:\Program Files\EasyPHP-5.3.6.0\www\jugurtha international\dynamiques\dynamique_inscription2.php on line 47
    L'ancien mot de passe n'est pas correct.
    Retour
    sachant que bolhich1 est le résultat de la première instruction merci pour votre aide

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    suffit juste de se relire ...

    passe_enc et pas pass_enc

  9. #9
    Membre confirmé
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    108
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 108
    Par défaut
    désolé j'ai presque honte!
    mais un autre problème persiste toujours
    le message d'erreur malgré que la saisie du mot de passe est juste s'affiche toujours
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    L'ancien mot de passe n'est pas correct.
    Retour
    et l'instruction ne fonctionne pas, rien ne s'affiche

  10. #10
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    met des var_dump pour vérifier tes valeurs,

    fait juste :
    le début est inutile

  11. #11
    Membre confirmé
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    108
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 108
    Par défaut voilà ce que j'ai mis et voilà ce que j'ai obtenu
    j'ai modifié mon script comme vous m'avez proposé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $passe_enc=md5($passe_enc);
    	$reponse_passe=mysql_query("SELECT * FROM client WHERE mot_de_passe='$passe_enc' AND session='$session'") or die ('Erreur : '.mysql_error());	
    //verification si mdp valide
     
    	$test_mdp=mysql_fetch_array($reponse_passe);
    	var_dump($ancien_mdp);
    	$ancien_mdp=$test_mdp['mot_de_passe'];
    	echo $ancien_mdp;
    	echo"<br>";
    	if($passe_enc!==$ancien_mdp)
    	{
    	echo'L\'ancien mot de passe n\'est pas correct.<br /><a href="profil.php" onClick="history.back()">Retour</a>';
    	return FALSE;
    	}
    et voilà ce que j'ai obtenu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    null
     
     
    L'ancien mot de passe n'est pas correct.
    Retour
    ça fonction toujours pas
    :-(

  12. #12
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    mais relis toi, si tu fais un var_dump sur une variable qui n'existe pas c'est normale ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ancien_mdp=$test_mdp['mot_de_passe'];
    var_dump($ancien_mdp);

  13. #13
    Membre confirmé
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    108
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 108
    Par défaut
    excuse moi c'est pour la première fois que j'utilise la fonction var_dump et je l'ai utilisé comme vous m'avez proposé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $passe_enc=md5($passe_enc);
    	$reponse_passe=mysql_query("SELECT * FROM client WHERE mot_de_passe='$passe_enc' AND session='$session'") or die ('Erreur : '.mysql_error());	
    //verification si mdp valide
     
    	$test_mdp=mysql_fetch_array($reponse_passe);
    	$ancien_mdp=$test_mdp['mot_de_passe'];
    	var_dump($ancien_mdp);
    	echo $ancien_mdp;
    	echo"<br>";
    	if($passe_enc!==$ancien_mdp)
    	{
    	echo'L\'ancien mot de passe n\'est pas correct.<br /><a href="profil.php" onClick="history.back()">Retour</a>';
    	return FALSE;
    	}
    l'affichage est le même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    null
     
     
    L'ancien mot de passe n'est pas correct.
    Retour

  14. #14
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    avant de poster fait le avec les autres variables,
    t'as vérifie si $test_mdp, renvoie quelque chose ?
    jamais tu ne verfie que la requete renvoie bien un resultat

    d'ailleurs es tu bien en mode développement ?
    ton error_reporting est bien a E_ALL | E_STRICT ?
    t'as activé le mysql.trace_mode ?

    (et indente ton code)

    sinon au tout debut de ton code fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ini_set('display_errors', true);
    ini_set('mysql.trace_mode', true);
    error_reporting(-1);

  15. #15
    Membre confirmé
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    108
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 108
    Par défaut
    d'ailleurs es tu bien en mode développement ?
    ton error_reporting est bien a E_ALL | E_STRICT ?
    t'as activé le mysql.trace_mode ?
    euh désolé si je suis assez débutant et je ne sais pas de quoi s'agit t il exactement :O je vais faire mes recherches pour voire comment les activer!
    et effectivement j'ai mis un echo pour et ça n'affiche rien
    sinon j'ai mis comme vous avez dis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ini_set('display_errors', true);
    ini_set('mysql.trace_mode', true);
    error_reporting(-1);
    au debut de mon script et j'ai obtenu ça en affichage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    null
     
     
    L'ancien mot de passe n'est pas correct.
    Retour
    Warning: Unknown: 1 result set(s) not freed. Use mysql_free_result to free result sets which were requested using mysql_query() in Unknown on line 0
    apparemment je dois changer mysql_query() en ça comme ils proposent n'es ce pas ???

  16. #16
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    non c'est pas ca tout est expliquer dans la doc de mysql_free_result

    et c'est pas echo mais var_dump qu'il faut faire

Discussions similaires

  1. [CS4] Non lecture d'une interpolation de mouvement
    Par pmax35 dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 10/10/2010, 18h23
  2. Caractère non valide # dans une requete
    Par ninou58 dans le forum Langage
    Réponses: 3
    Dernier message: 24/06/2009, 13h38
  3. [MySQL] argument non valide dans une requete mysql
    Par rinuom99 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 07/10/2008, 12h53
  4. résultat non souhaité d'une requete sql
    Par mayers dans le forum Requêtes
    Réponses: 4
    Dernier message: 25/07/2007, 00h01
  5. Réponses: 3
    Dernier message: 28/02/2006, 17h52

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