A-t-il un expert assé bon pour règler mon pb
Résolu/Fermé
HotSkill
Messages postés
65
Date d'inscription
mardi 1 janvier 2008
Statut
Membre
Dernière intervention
26 septembre 2010
-
10 oct. 2008 à 14:01
Utilisateur anonyme - 14 oct. 2008 à 08:00
Utilisateur anonyme - 14 oct. 2008 à 08:00
A voir également:
- A-t-il un expert assé bon pour règler mon pb
- Regler luminosite ecran pc - Guide
- Regle pour mesurer - Guide
- Anagramme expert - Forum Logiciels
- Regler montre ushuaia ✓ - Forum Loisirs / Divertissements
- Comment régler la qualité du signal satellite nilesat - Forum TV & Vidéo
24 réponses
Utilisateur anonyme
10 oct. 2008 à 15:04
10 oct. 2008 à 15:04
bonjour,
personne n'est asez bon pour répondre--
JL, m'enfin c'est juste mon avis @+
se faire aider, n'est pas faire faire son travail
personne n'est asez bon pour répondre--
JL, m'enfin c'est juste mon avis @+
se faire aider, n'est pas faire faire son travail
Posotaz
Messages postés
489
Date d'inscription
samedi 23 juin 2007
Statut
Membre
Dernière intervention
19 juin 2011
225
11 oct. 2008 à 00:50
11 oct. 2008 à 00:50
Salut,
Je soupçonne la méthode mysql_real_escape_string(htmlspecialchars($chaine)) de faire une conversion inappropriée par rapport à ce qui est réellement stocké dans la table de la base de données. Le htmlspecialchars est-il réellement nécessaire ?
Le mieux c'est d'aller rechercher en DB la ligne qui correspond aux infos de l'utilisateur (via ton MySqlAdmin) et d'afficher $u et $mp (par la commande "echo" dans ton PHP)... ainsi tu pourras comparer les deux x2 chaines et confirmer (ou pas) le fait que ce sont tes méthodes d'échappement qui posent problème.
Je soupçonne la méthode mysql_real_escape_string(htmlspecialchars($chaine)) de faire une conversion inappropriée par rapport à ce qui est réellement stocké dans la table de la base de données. Le htmlspecialchars est-il réellement nécessaire ?
Le mieux c'est d'aller rechercher en DB la ligne qui correspond aux infos de l'utilisateur (via ton MySqlAdmin) et d'afficher $u et $mp (par la commande "echo" dans ton PHP)... ainsi tu pourras comparer les deux x2 chaines et confirmer (ou pas) le fait que ce sont tes méthodes d'échappement qui posent problème.
Utilisateur anonyme
11 oct. 2008 à 09:34
11 oct. 2008 à 09:34
Bonjour,
Je pense qu'il y a un soucis au niveau du mote de passe ou plutoy de la variable $mp qui est une fois une variable booléenne (true false) et ensuite tu y mets le mot de passe entré.
------------------
$mp = FALSE;
$message .= "<p>Vous avez oublié d'indiquer votre ancien mot de
passe</p>";
}
else
{
$mp = ($_POST['mot_de_passe']);
----------------------
ensuite tu testes
if ($u && $mp && $np)
alors $mp c'est quoi, si tu y as mis un mot de passe c'est if (isset($mp)) qu'il faut mettre
ou alors utilises un autre nom de varaible.
Je pense qu'il y a un soucis au niveau du mote de passe ou plutoy de la variable $mp qui est une fois une variable booléenne (true false) et ensuite tu y mets le mot de passe entré.
------------------
$mp = FALSE;
$message .= "<p>Vous avez oublié d'indiquer votre ancien mot de
passe</p>";
}
else
{
$mp = ($_POST['mot_de_passe']);
----------------------
ensuite tu testes
if ($u && $mp && $np)
alors $mp c'est quoi, si tu y as mis un mot de passe c'est if (isset($mp)) qu'il faut mettre
ou alors utilises un autre nom de varaible.
Utilisateur anonyme
11 oct. 2008 à 16:30
11 oct. 2008 à 16:30
dans le cas qui nous interesse , ici
if ($u && $mp && $np)
n'a pas la valeur true mais contient le mot de passe.
if ($u && $mp && $np)
n'a pas la valeur true mais contient le mot de passe.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
11 oct. 2008 à 16:47
11 oct. 2008 à 16:47
Non, je situe l'erreur et la cause de l'erreur. après tu vois comment palier le soucis.
je pense sincèrement que ton script pourrait être simplifié et beaucoup plus lisible en le structurant autrement de manière à eviter tous ces if else et toutes ces variables booléennes.
un exemple de modification
comme tu le fais un peu tu testes toutes les erreurs (en diminuant les else) et quand il y en une tu créées une variables $message
quand tu trouve une erreur tu mets $erreur=true;
quand tu as tout testé, tu fais if ($erreur) echo $message;
else {
et là tu fais ton traitement
}
je pense sincèrement que ton script pourrait être simplifié et beaucoup plus lisible en le structurant autrement de manière à eviter tous ces if else et toutes ces variables booléennes.
un exemple de modification
comme tu le fais un peu tu testes toutes les erreurs (en diminuant les else) et quand il y en une tu créées une variables $message
quand tu trouve une erreur tu mets $erreur=true;
quand tu as tout testé, tu fais if ($erreur) echo $message;
else {
et là tu fais ton traitement
}
Utilisateur anonyme
11 oct. 2008 à 16:58
11 oct. 2008 à 16:58
une autre piste,
si tu regardes ton code en l'identant (ce que l'on ne voit pas sur cette page) on a :
if ($u && $mp && $np) {
$u = mysql_real_escape_string(htmlspecialchars($_POST['nom_d_utilisateur']));
$mp = mysql_real_escape_string(htmlspecialchars($_POST['mot_de_passe']));
$mp = md5($_POST["mot_passe"]);
$np = mysql_real_escape_string(htmlspecialchars($_POST['mot_de_passe1']));
$np = md5($_POST["mot_passe1"]);
$np = mysql_real_escape_string(htmlspecialchars($_POST['mot_de_passe2']));
$np = md5($_POST["mot_passe2"]);
$rq = "SELECT id_utilisateur FROM utilisateurs
WHERE (nom_d_utilisateur= '$u' AND mot_de_passe= '$mp')";
$result = mysql_query($rq);
$nb = mysql_num_rows($result) ;
if ($nb == 1)
{ $ligne = mysql_fetch_array($result, MYSQL_NUM);
// Créer la requête
$rq = "UPDATE utilisateurs SET mot_de_passe= '$np'
WHERE id_utilisateur=$ligne[0]";
$result = mysql_query($rq);
if (mysql_affected_rows() == 1) // Si c'est OK
{ // Envoyer éventuellement un e-mail
echo "<p><b>Votre mot de passe vient d'être
modifié.</b></p>";
include ('pied.php'); // inclure le pied de page
exit(); // terminer le script
}
else // il y a eu un problème
{ echo "<p>Votre nouveau mot de passe n'a pas pu être modifié
".
"à cause d'une erreur système :
<p></p>".mysql_error()."<p></p>";
}
}
else
{ $message .= "<p>Votre nom d'utilisateur et votre mot de passe
ne".
" correspondent pas à un utilisateur
enregistré.</p>";
} // refermer la connexion avec la base de données
mysql_close();
}
else
{ // Quelque chose n'est pas correct
$message .= "<p>Veuillez avoir l'obligeance de recommencer</p>";
}
on s'aperçoit que le message est affiché quand
$nb est différent de 1 alors n'as-tu pas oublié de mettre une protection pour empêcher qu'un utilisateur soit en double ?
si tu regardes ton code en l'identant (ce que l'on ne voit pas sur cette page) on a :
if ($u && $mp && $np) {
$u = mysql_real_escape_string(htmlspecialchars($_POST['nom_d_utilisateur']));
$mp = mysql_real_escape_string(htmlspecialchars($_POST['mot_de_passe']));
$mp = md5($_POST["mot_passe"]);
$np = mysql_real_escape_string(htmlspecialchars($_POST['mot_de_passe1']));
$np = md5($_POST["mot_passe1"]);
$np = mysql_real_escape_string(htmlspecialchars($_POST['mot_de_passe2']));
$np = md5($_POST["mot_passe2"]);
$rq = "SELECT id_utilisateur FROM utilisateurs
WHERE (nom_d_utilisateur= '$u' AND mot_de_passe= '$mp')";
$result = mysql_query($rq);
$nb = mysql_num_rows($result) ;
if ($nb == 1)
{ $ligne = mysql_fetch_array($result, MYSQL_NUM);
// Créer la requête
$rq = "UPDATE utilisateurs SET mot_de_passe= '$np'
WHERE id_utilisateur=$ligne[0]";
$result = mysql_query($rq);
if (mysql_affected_rows() == 1) // Si c'est OK
{ // Envoyer éventuellement un e-mail
echo "<p><b>Votre mot de passe vient d'être
modifié.</b></p>";
include ('pied.php'); // inclure le pied de page
exit(); // terminer le script
}
else // il y a eu un problème
{ echo "<p>Votre nouveau mot de passe n'a pas pu être modifié
".
"à cause d'une erreur système :
<p></p>".mysql_error()."<p></p>";
}
}
else
{ $message .= "<p>Votre nom d'utilisateur et votre mot de passe
ne".
" correspondent pas à un utilisateur
enregistré.</p>";
} // refermer la connexion avec la base de données
mysql_close();
}
else
{ // Quelque chose n'est pas correct
$message .= "<p>Veuillez avoir l'obligeance de recommencer</p>";
}
on s'aperçoit que le message est affiché quand
$nb est différent de 1 alors n'as-tu pas oublié de mettre une protection pour empêcher qu'un utilisateur soit en double ?
Utilisateur anonyme
11 oct. 2008 à 17:31
11 oct. 2008 à 17:31
il n'est pas dur pourtant, on teste les erreurs puis on valide ou pas.
il en exsiet des plus simples sur le net.
il en exsiet des plus simples sur le net.
Utilisateur anonyme
11 oct. 2008 à 18:23
11 oct. 2008 à 18:23
si tu mets dans ta base deux utilisateurs de même nom et même mot de passe la requete renvoie 2 lignes et dons nb n'est pas == 1 mais égal à deux
dont soit tu crées un index dans ta bdd ou tu vérifies que l'utilisateur n'est pas déjà enregistré;
dont soit tu crées un index dans ta bdd ou tu vérifies que l'utilisateur n'est pas déjà enregistré;
Utilisateur anonyme
11 oct. 2008 à 22:41
11 oct. 2008 à 22:41
Bon alors le problème est ailleurs.
une solution serait de mettre tout en commentaires, puis de décommenter au fur et à meusre des tests pour essayer de trouver l'endroit où cela commence à ne plus aller;
une solution serait de mettre tout en commentaires, puis de décommenter au fur et à meusre des tests pour essayer de trouver l'endroit où cela commence à ne plus aller;
Utilisateur anonyme
12 oct. 2008 à 09:08
12 oct. 2008 à 09:08
bonjour,
on rattaque ce matin.
j'ai créé une table chez moi pour voir et bien j'ai trouvé des choses étranges
ici :
$mp = md5($_POST["mot_passe"]);
$np = mysql_real_escape_string(htmlspecialchars($_POST['mot_de_passe1']));
$np = md5($_POST["mot_passe1"]);
$np = mysql_real_escape_string(htmlspecialchars($_POST['mot_de_passe2']));
$np = md5($_POST["mot_passe2"]);
dans le $_POST c'est pas les bons noms
c'est mot_de_passe
mot_de_passe1
mot_de_passe2
on rattaque ce matin.
j'ai créé une table chez moi pour voir et bien j'ai trouvé des choses étranges
ici :
$mp = md5($_POST["mot_passe"]);
$np = mysql_real_escape_string(htmlspecialchars($_POST['mot_de_passe1']));
$np = md5($_POST["mot_passe1"]);
$np = mysql_real_escape_string(htmlspecialchars($_POST['mot_de_passe2']));
$np = md5($_POST["mot_passe2"]);
dans le $_POST c'est pas les bons noms
c'est mot_de_passe
mot_de_passe1
mot_de_passe2
HotSkill
Messages postés
65
Date d'inscription
mardi 1 janvier 2008
Statut
Membre
Dernière intervention
26 septembre 2010
1
12 oct. 2008 à 16:41
12 oct. 2008 à 16:41
ok merci mais re voila mon code avec de meilleur nom de variable et mieux coder pour toi mais jai tourjours le meme message d erreur
regarde ces image
http://img2.hostingpics.net/pics/314054pbphp.jpg --------> screenshot de l erreur
http://img2.hostingpics.net/pics/210829pbphp2.jpg ------ > screenshot de ma base de donné
Nom de ma base : ma base
Nom de ma table : utilisateurs
revoici mon code retapés
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>cahnger de mot passe</title>
</head>
<body>
<?php
$titre_page = "Changer un mot de passe";
include('menu.php');
if (isset($_POST['submit']))
{ // Traiter le formulaire
// connexion à la base de données
mysql_connect("localhost", "root", "");
mysql_select_db("ma base");
// créer une variable vide
$message = NULL;
// Vérifier la présence d'un nom d'utilisateur
if (empty($_POST['nom_d_utilisateur']))
{
$u = FALSE;
$message .= '<p>Vous avez oublié d\'indiquer votre nom d\'utilisateur</p>';
}
else
{
$u = ($_POST['nom_d_utilisateur']);
}
// Vérifier l'existence de l'ancien mot de passe
if (empty($_POST['mot_passe']))
{
$mp = FALSE;
$message .= "<p>Vous avez oublié d'indiquer votre ancien mot de passe</p>";
}
else
{
$mp = ($_POST['mot_passe']);
}
// Vérifier l'existence d'un nouveau mot de passe
if (empty($_POST['mot_passe1']))
{
$np = FALSE;
$message .= "<p>Vous avez oublié d'indiquer votre nouveau mot de
passe</p>";
}
else
{
if($_POST['mot_passe1'] == $_POST['mot_passe2'])
{
$np = ($_POST['mot_passe1']);
}
else
{
$np = FALSE;
$message .= "<p>Votre second mot de passe est différent de celui que vous venez de saisir</p>";
}
}
if ($u && $mp && $np)
{
$u = mysql_real_escape_string($_POST['nom_d_utilisateur']);
$mp = mysql_real_escape_string(md5($_POST['mot_passe']));
$np = mysql_real_escape_string(md5($_POST['mot_passe1']));
$np = mysql_real_escape_string(md5($_POST['mot_passe2']));
$check_if_exist = mysql_query('SELECT count(*) as if_exist FROM utilisateurs WHERE nom_d_utilisateur="'.$u.'" AND mot_de_passe="'.$mp.'"');
$rep_if_exist = mysql_fetch_array($check_if_exist);
if($rep_if_exist['if_exist']==1)
{
$query = mysql_query('SELECT id_utilisateur FROM utilisateurs WHERE nom_d_utilisateur="'.$u.'" AND mot_de_passe="'.$mp.'"');
$ligne = mysql_fetch_array($query);
// Créer la requête
$rq = "UPDATE utilisateurs SET mot_de_passe='".$np1."'
WHERE id_utilisateur='".$ligne['id_utilisateur']."'";
$result = mysql_query($rq);
if($result) // Si c'est OK
{ // Envoyer éventuellement un e-mail
echo "<p><b>Votre mot de passe vient d'être modifié.</b></p>";
include ('pied.php'); // inclure le pied de page
exit(); // terminer le script
}
else // il y a eu un problème
{
echo "<p>Votre nouveau mot de passe n'a pas pu être modifié à cause d'une erreur système : <p></p>".mysql_error()."<p></p>";
}
}
else
{
$message .= "<p>Votre nom d'utilisateur et votre mot de passe ne correspondent pas à un utilisateur enregistré.</p>";
}
// refermer la connexion avec la base de données
mysql_close();
}
else
{ // Quelque chose n'est pas correct
$message .= "<p>Veuillez avoir l'obligeance de recommencer</p>";
}
}
// Afficher éventuellement un ou plusieurs messages d'erreur
if(isset($message))
{
echo "<font color='red'>$message</font>";
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<fieldset>
<legend>Veuillez remplir le formulaire ci-dessous :</legend>
<p><b>Nom d'utilisateur :</b>
<input type="text" name="nom_d_utilisateur" size="10" maxlength="20"
value="<?php if (isset($_POST['nom_d_utilisateur']))
echo $_POST['nom_d_utilisateur']; ?>"/>
</p>
<p><b>Mot de passe actuel :</b>
<input type="password" name="mot_passe" size="20" maxlength="20" />
</p>
<p><b>Nouveau mot de passe :</b>
<input type="password" name="mot_passe1" size="20" maxlength="20" />
</p>
<p><b>Confirmez votre nouveau mot de passe :</b>
<input type="password" name="mot_passe2" size="20" maxlength="20" />
</p>
</fieldset>
<div align="center">
<input type="submit" name="submit" value="Changer mon mot de passe" />
</div>
</form><!-- Fin du formulaire -->
<?php
include ('pied.php'); // Inclure le pied de page
?>
</body>
</html>
regarde ces image
http://img2.hostingpics.net/pics/314054pbphp.jpg --------> screenshot de l erreur
http://img2.hostingpics.net/pics/210829pbphp2.jpg ------ > screenshot de ma base de donné
Nom de ma base : ma base
Nom de ma table : utilisateurs
revoici mon code retapés
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>cahnger de mot passe</title>
</head>
<body>
<?php
$titre_page = "Changer un mot de passe";
include('menu.php');
if (isset($_POST['submit']))
{ // Traiter le formulaire
// connexion à la base de données
mysql_connect("localhost", "root", "");
mysql_select_db("ma base");
// créer une variable vide
$message = NULL;
// Vérifier la présence d'un nom d'utilisateur
if (empty($_POST['nom_d_utilisateur']))
{
$u = FALSE;
$message .= '<p>Vous avez oublié d\'indiquer votre nom d\'utilisateur</p>';
}
else
{
$u = ($_POST['nom_d_utilisateur']);
}
// Vérifier l'existence de l'ancien mot de passe
if (empty($_POST['mot_passe']))
{
$mp = FALSE;
$message .= "<p>Vous avez oublié d'indiquer votre ancien mot de passe</p>";
}
else
{
$mp = ($_POST['mot_passe']);
}
// Vérifier l'existence d'un nouveau mot de passe
if (empty($_POST['mot_passe1']))
{
$np = FALSE;
$message .= "<p>Vous avez oublié d'indiquer votre nouveau mot de
passe</p>";
}
else
{
if($_POST['mot_passe1'] == $_POST['mot_passe2'])
{
$np = ($_POST['mot_passe1']);
}
else
{
$np = FALSE;
$message .= "<p>Votre second mot de passe est différent de celui que vous venez de saisir</p>";
}
}
if ($u && $mp && $np)
{
$u = mysql_real_escape_string($_POST['nom_d_utilisateur']);
$mp = mysql_real_escape_string(md5($_POST['mot_passe']));
$np = mysql_real_escape_string(md5($_POST['mot_passe1']));
$np = mysql_real_escape_string(md5($_POST['mot_passe2']));
$check_if_exist = mysql_query('SELECT count(*) as if_exist FROM utilisateurs WHERE nom_d_utilisateur="'.$u.'" AND mot_de_passe="'.$mp.'"');
$rep_if_exist = mysql_fetch_array($check_if_exist);
if($rep_if_exist['if_exist']==1)
{
$query = mysql_query('SELECT id_utilisateur FROM utilisateurs WHERE nom_d_utilisateur="'.$u.'" AND mot_de_passe="'.$mp.'"');
$ligne = mysql_fetch_array($query);
// Créer la requête
$rq = "UPDATE utilisateurs SET mot_de_passe='".$np1."'
WHERE id_utilisateur='".$ligne['id_utilisateur']."'";
$result = mysql_query($rq);
if($result) // Si c'est OK
{ // Envoyer éventuellement un e-mail
echo "<p><b>Votre mot de passe vient d'être modifié.</b></p>";
include ('pied.php'); // inclure le pied de page
exit(); // terminer le script
}
else // il y a eu un problème
{
echo "<p>Votre nouveau mot de passe n'a pas pu être modifié à cause d'une erreur système : <p></p>".mysql_error()."<p></p>";
}
}
else
{
$message .= "<p>Votre nom d'utilisateur et votre mot de passe ne correspondent pas à un utilisateur enregistré.</p>";
}
// refermer la connexion avec la base de données
mysql_close();
}
else
{ // Quelque chose n'est pas correct
$message .= "<p>Veuillez avoir l'obligeance de recommencer</p>";
}
}
// Afficher éventuellement un ou plusieurs messages d'erreur
if(isset($message))
{
echo "<font color='red'>$message</font>";
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<fieldset>
<legend>Veuillez remplir le formulaire ci-dessous :</legend>
<p><b>Nom d'utilisateur :</b>
<input type="text" name="nom_d_utilisateur" size="10" maxlength="20"
value="<?php if (isset($_POST['nom_d_utilisateur']))
echo $_POST['nom_d_utilisateur']; ?>"/>
</p>
<p><b>Mot de passe actuel :</b>
<input type="password" name="mot_passe" size="20" maxlength="20" />
</p>
<p><b>Nouveau mot de passe :</b>
<input type="password" name="mot_passe1" size="20" maxlength="20" />
</p>
<p><b>Confirmez votre nouveau mot de passe :</b>
<input type="password" name="mot_passe2" size="20" maxlength="20" />
</p>
</fieldset>
<div align="center">
<input type="submit" name="submit" value="Changer mon mot de passe" />
</div>
</form><!-- Fin du formulaire -->
<?php
include ('pied.php'); // Inclure le pied de page
?>
</body>
</html>
Utilisateur anonyme
12 oct. 2008 à 17:45
12 oct. 2008 à 17:45
y aun truc là
f ($u && $mp && $np)
{
$u = mysql_real_escape_string($_POST['nom_d_utilisateur']);
$mp = mysql_real_escape_string(md5($_POST['mot_passe']));
$np = mysql_real_escape_string(md5($_POST['mot_passe1']));
$np = mysql_real_escape_string(md5($_POST['mot_passe2']));
la dernière ligne c'est plutôt :
$np1 = mysql_real_escape_string(md5($_POST['mot_passe2']));
JL, m'enfin c'est juste mon avis @+
se faire aider, n'est pas faire faire son travail
f ($u && $mp && $np)
{
$u = mysql_real_escape_string($_POST['nom_d_utilisateur']);
$mp = mysql_real_escape_string(md5($_POST['mot_passe']));
$np = mysql_real_escape_string(md5($_POST['mot_passe1']));
$np = mysql_real_escape_string(md5($_POST['mot_passe2']));
la dernière ligne c'est plutôt :
$np1 = mysql_real_escape_string(md5($_POST['mot_passe2']));
JL, m'enfin c'est juste mon avis @+
se faire aider, n'est pas faire faire son travail
Utilisateur anonyme
13 oct. 2008 à 12:11
13 oct. 2008 à 12:11
post sciptum
j'ai fait tourner le pgm chez moi, c'est Ok.
j'ai fait seulement quelques adaptations (nom de table ...) par rapport au dernier source communiqué.
j'ai fait tourner le pgm chez moi, c'est Ok.
j'ai fait seulement quelques adaptations (nom de table ...) par rapport au dernier source communiqué.
Utilisateur anonyme
13 oct. 2008 à 17:32
13 oct. 2008 à 17:32
je ne comprends pas ton truc, car dans l'image de la table que tu m'as montrée hier, le mot de passe est codé.
mais si tu pense que c'est ça c'est à l'enregistrement de l'utlisatuer qu'il faut le faire.
dans le formulaire d'inscription tu récupères le mdpw, tu le codes et tu le mets en base.
mais si tu pense que c'est ça c'est à l'enregistrement de l'utlisatuer qu'il faut le faire.
dans le formulaire d'inscription tu récupères le mdpw, tu le codes et tu le mets en base.
Utilisateur anonyme
13 oct. 2008 à 20:26
13 oct. 2008 à 20:26
Bonsoir,
Je ne comprends toujots pas. si le mote de passe est correct cela doit passer.
J'ai réussi à le faire chez moi.
un autre truc
à quoi sert cetet double vérification (à mon avis inutile)
on compte
$check_if_exist = mysql_query('SELECT count(*) as if_exist FROM utilisateurs WHERE nom_d_utilisateur="'.$u.'" AND mot_de_passe="'.$mp.'"');
$rep_if_exist = mysql_fetch_array($check_if_exist);
if($rep_if_exist['if_exist']==1)
{
et si il y en a un on le lit
$query = mysql_query('SELECT id_utilisateur FROM utilisateurs WHERE nom_d_utilisateur="'.$u.'" AND mot_de_passe="'.$mp.'"');
$ligne = mysql_fetch_array($query);
pourquoi ne pas le lire de suite et si la requête en renvoit 1 c'est OK
Je ne comprends toujots pas. si le mote de passe est correct cela doit passer.
J'ai réussi à le faire chez moi.
un autre truc
à quoi sert cetet double vérification (à mon avis inutile)
on compte
$check_if_exist = mysql_query('SELECT count(*) as if_exist FROM utilisateurs WHERE nom_d_utilisateur="'.$u.'" AND mot_de_passe="'.$mp.'"');
$rep_if_exist = mysql_fetch_array($check_if_exist);
if($rep_if_exist['if_exist']==1)
{
et si il y en a un on le lit
$query = mysql_query('SELECT id_utilisateur FROM utilisateurs WHERE nom_d_utilisateur="'.$u.'" AND mot_de_passe="'.$mp.'"');
$ligne = mysql_fetch_array($query);
pourquoi ne pas le lire de suite et si la requête en renvoit 1 c'est OK
HotSkill
Messages postés
65
Date d'inscription
mardi 1 janvier 2008
Statut
Membre
Dernière intervention
26 septembre 2010
1
11 oct. 2008 à 02:33
11 oct. 2008 à 02:33
Bonjour,
Merci de ton aide mais malheuresement ce n'est pas ca meme si jai enlevé mysql_real_escape_string(htmlspecialchars($chaine))
cela n'a pas fonctionner
Merci de ton aide mais malheuresement ce n'est pas ca meme si jai enlevé mysql_real_escape_string(htmlspecialchars($chaine))
cela n'a pas fonctionner
HotSkill
Messages postés
65
Date d'inscription
mardi 1 janvier 2008
Statut
Membre
Dernière intervention
26 septembre 2010
1
11 oct. 2008 à 16:27
11 oct. 2008 à 16:27
pour tant dans ma page d enregistrement je fait comme ça et sa marché tres bien je verrais pas pourquoi la dans mon script pour changer de mot de passe sa ne marcherais pas
HotSkill
Messages postés
65
Date d'inscription
mardi 1 janvier 2008
Statut
Membre
Dernière intervention
26 septembre 2010
1
11 oct. 2008 à 16:43
11 oct. 2008 à 16:43
donc tu dit qu il faudrait que je mette une valeur true ou début de mon script a chaque variable ?
HotSkill
Messages postés
65
Date d'inscription
mardi 1 janvier 2008
Statut
Membre
Dernière intervention
26 septembre 2010
1
11 oct. 2008 à 16:56
11 oct. 2008 à 16:56
ok mais vu chu pas grand expert en php je comprend pas trop :s
HotSkill
Messages postés
65
Date d'inscription
mardi 1 janvier 2008
Statut
Membre
Dernière intervention
26 septembre 2010
1
11 oct. 2008 à 17:28
11 oct. 2008 à 17:28
Mais a vrai c pcq j ai prit se code dans un livre je ne le comprend pas beaucoup car moi aussi je le trouve compliqué mais c le seul code que j ai ....
HotSkill
Messages postés
65
Date d'inscription
mardi 1 janvier 2008
Statut
Membre
Dernière intervention
26 septembre 2010
1
11 oct. 2008 à 17:33
11 oct. 2008 à 17:33
comme que tu a cité préceédament que veut tu dire par tu as oublié de mettre une protection pour empêcher qu'un utilisateur soit en double
une autre piste,
si tu regardes ton code en l'identant (ce que l'on ne voit pas sur cette page) on a :
if ($u && $mp && $np) {
$u = mysql_real_escape_string(htmlspecialchars($_POST['nom_d_utilisateur']));
$mp = mysql_real_escape_string(htmlspecialchars($_POST['mot_de_passe']));
$mp = md5($_POST["mot_passe"]);
$np = mysql_real_escape_string(htmlspecialchars($_POST['mot_de_passe1']));
$np = md5($_POST["mot_passe1"]);
$np = mysql_real_escape_string(htmlspecialchars($_POST['mot_de_passe2']));
$np = md5($_POST["mot_passe2"]);
$rq = "SELECT id_utilisateur FROM utilisateurs
WHERE (nom_d_utilisateur= '$u' AND mot_de_passe= '$mp')";
$result = mysql_query($rq);
$nb = mysql_num_rows($result) ;
if ($nb == 1)
{ $ligne = mysql_fetch_array($result, MYSQL_NUM);
// Créer la requête
$rq = "UPDATE utilisateurs SET mot_de_passe= '$np'
WHERE id_utilisateur=$ligne[0]";
$result = mysql_query($rq);
if (mysql_affected_rows() == 1) // Si c'est OK
{ // Envoyer éventuellement un e-mail
echo "<p><b>Votre mot de passe vient d'être
modifié.</b></p>";
include ('pied.php'); // inclure le pied de page
exit(); // terminer le script
}
else // il y a eu un problème
{ echo "<p>Votre nouveau mot de passe n'a pas pu être modifié
".
"à cause d'une erreur système :
<p></p>".mysql_error()."<p></p>";
}
}
else
{ $message .= "<p>Votre nom d'utilisateur et votre mot de passe
ne".
" correspondent pas à un utilisateur
enregistré.</p>";
} // refermer la connexion avec la base de données
mysql_close();
}
else
{ // Quelque chose n'est pas correct
$message .= "<p>Veuillez avoir l'obligeance de recommencer</p>";
}
on s'aperçoit que le message est affiché quand
$nb est différent de 1 alors n'as-tu pas oublié de mettre une protection pour empêcher qu'un utilisateur soit en double ?
une autre piste,
si tu regardes ton code en l'identant (ce que l'on ne voit pas sur cette page) on a :
if ($u && $mp && $np) {
$u = mysql_real_escape_string(htmlspecialchars($_POST['nom_d_utilisateur']));
$mp = mysql_real_escape_string(htmlspecialchars($_POST['mot_de_passe']));
$mp = md5($_POST["mot_passe"]);
$np = mysql_real_escape_string(htmlspecialchars($_POST['mot_de_passe1']));
$np = md5($_POST["mot_passe1"]);
$np = mysql_real_escape_string(htmlspecialchars($_POST['mot_de_passe2']));
$np = md5($_POST["mot_passe2"]);
$rq = "SELECT id_utilisateur FROM utilisateurs
WHERE (nom_d_utilisateur= '$u' AND mot_de_passe= '$mp')";
$result = mysql_query($rq);
$nb = mysql_num_rows($result) ;
if ($nb == 1)
{ $ligne = mysql_fetch_array($result, MYSQL_NUM);
// Créer la requête
$rq = "UPDATE utilisateurs SET mot_de_passe= '$np'
WHERE id_utilisateur=$ligne[0]";
$result = mysql_query($rq);
if (mysql_affected_rows() == 1) // Si c'est OK
{ // Envoyer éventuellement un e-mail
echo "<p><b>Votre mot de passe vient d'être
modifié.</b></p>";
include ('pied.php'); // inclure le pied de page
exit(); // terminer le script
}
else // il y a eu un problème
{ echo "<p>Votre nouveau mot de passe n'a pas pu être modifié
".
"à cause d'une erreur système :
<p></p>".mysql_error()."<p></p>";
}
}
else
{ $message .= "<p>Votre nom d'utilisateur et votre mot de passe
ne".
" correspondent pas à un utilisateur
enregistré.</p>";
} // refermer la connexion avec la base de données
mysql_close();
}
else
{ // Quelque chose n'est pas correct
$message .= "<p>Veuillez avoir l'obligeance de recommencer</p>";
}
on s'aperçoit que le message est affiché quand
$nb est différent de 1 alors n'as-tu pas oublié de mettre une protection pour empêcher qu'un utilisateur soit en double ?