Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/07/2011, 15h40   #1
Candidat au titre de Membre du Club
 
Étudiant
Inscription : mars 2009
Messages : 102
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2009
Messages : 102
Points : 14
Points : 14
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 :
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 :
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 :
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
roy-mustang est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 15h49   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
vérifie toujours les valeurs
ps : belle injection SQL au passage
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 16h22   #3
Candidat au titre de Membre du Club
 
Étudiant
Inscription : mars 2009
Messages : 102
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2009
Messages : 102
Points : 14
Points : 14
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
roy-mustang est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 05/07/2011, 16h52   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 17h04   #5
Candidat au titre de Membre du Club
 
Étudiant
Inscription : mars 2009
Messages : 102
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2009
Messages : 102
Points : 14
Points : 14
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 :
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 :
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
roy-mustang est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 17h10   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 17h20   #7
Candidat au titre de Membre du Club
 
Étudiant
Inscription : mars 2009
Messages : 102
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2009
Messages : 102
Points : 14
Points : 14
Par défaut voici mon script en entier et voici ce qui s'affiche

ceci est le script en entier
Code :
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 :
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
roy-mustang est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 17h22   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
suffit juste de se relire ...

passe_enc et pas pass_enc
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 17h31   #9
Candidat au titre de Membre du Club
 
Étudiant
Inscription : mars 2009
Messages : 102
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2009
Messages : 102
Points : 14
Points : 14
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 :
1
2
L'ancien mot de passe n'est pas correct.
Retour
et l'instruction ne fonctionne pas, rien ne s'affiche
roy-mustang est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 17h35   #10
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
met des var_dump pour vérifier tes valeurs,

fait juste :
le début est inutile
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 17h43   #11
Candidat au titre de Membre du Club
 
Étudiant
Inscription : mars 2009
Messages : 102
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2009
Messages : 102
Points : 14
Points : 14
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 :
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 :
1
2
3
4
5
null
 
 
L'ancien mot de passe n'est pas correct.
Retour
ça fonction toujours pas
:-(
roy-mustang est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 17h46   #12
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
mais relis toi, si tu fais un var_dump sur une variable qui n'existe pas c'est normale ...

Code :
1
2
$ancien_mdp=$test_mdp['mot_de_passe'];
var_dump($ancien_mdp);
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 17h49   #13
Candidat au titre de Membre du Club
 
Étudiant
Inscription : mars 2009
Messages : 102
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2009
Messages : 102
Points : 14
Points : 14
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 :
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 :
1
2
3
4
5
null
 
 
L'ancien mot de passe n'est pas correct.
Retour
roy-mustang est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 17h55   #14
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
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 :
1
2
3
ini_set('display_errors', true);
ini_set('mysql.trace_mode', true);
error_reporting(-1);
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 18h13   #15
Candidat au titre de Membre du Club
 
Étudiant
Inscription : mars 2009
Messages : 102
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2009
Messages : 102
Points : 14
Points : 14
Citation:
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 :
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 :
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 ???
roy-mustang est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 18h16   #16
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h11.


 
 
 
 
Partenaires

Hébergement Web