Probleme avec update

Résolu
rishi24 Messages postés 2 Date d'inscription dimanche 8 février 2009 Statut Membre Dernière intervention 19 février 2009 - 19 févr. 2009 à 16:35
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 - 19 févr. 2009 à 21:09
Bonjour, bon voila mon prob. je veux modifier un element dans ma base en faisant un update grace à un formulaire.Je passe mes variables en parametre grace à la méthode post. Le truc c'est que quand je fais le teste, il m'indique que la modification a été correctement faite mais lorsque je consulte ma base, elle n'a pas été modifier. Pouvez vous m'aider svp.Merci. voici mon code:
formulaire avec bouton modifier->modification1.php->modifiction2.php
.....
dans modification1.php
/*afficher le formulaire*/
        echo '<form id="contact" method="post" action="modification2.php">';
        echo '  <center>Modification

</center>'."\n";       
        echo '    <fieldset style="background-color:#b0c4de"><legend></legend>'."\n";
        echo '        '."\n";
        echo '    <fieldset style="background-color:#dcdcdc">'."\n";
        echo '            <label for="Nom">Nom :</label>'."\n";
        echo '    '."\n";
        echo '       

'."\n";
        echo '    </fieldset>'."\n";
        echo '';
        echo '</form>'."\n";

et dans modification 2.php
// On commence par récupérer les champs
if(isset($_POST["nom"]))
  $nom=$_POST['nom'];
else      $nom="";

//création de la requête SQL:
  $sql = "UPDATE personnes
            SET nom         = '$nom',
           WHERE nom = '$nom' " ;
           
  //exécution de la requête SQL:
  $requete = mssql_query($sql, $cnx) or die("->".mssql_get_last_message()."<-" ) ;
  //affichage des résultats, pour savoir si la modification a marchée:
  if($requete)
  {
    echo("La modification a été correctement effectuée") ;
  }
  else
  {
    echo("La modification a échouée") ;
  }
.......

3 réponses

TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
19 févr. 2009 à 21:09
Pour faire un tel formulaire je suppose que l'utilisateur est connecté. Si c'est effectivement le cas tu est en mesure de connaître l'utilisateur et donc de repérer dans la base de donnée l'entrée qui lui correspond a l'aide son son id, nom ou autre.

Pour ce qui est de l'injection de SQL, tu peux utiliser mysql_real_escape_string() ou htmlentities() avec l'option ENT_QUOTES afin d'assainir la chaîne de caractères. Bon ok si ce n'est qu'un devoir ce n'est pas bien important, sauf bien entendu si ton prof fait rentrer ce genre de choses dans le barème d'évaluation.

Soit dit en passant, ton test de la réussite de la modification e sert a rien : dans el cas où cette dernière échoue, le script sera arrêté net par le die() avant le test.
3
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
19 févr. 2009 à 20:28
Salut,

Commence déjà par relire ce que fait ta requette SQL, au besoin fait une simulation avec un exemple. D'ailleurs regardons ensemble ce que ça donne si l'utilisateur entre toto dans le champ :
UPDATE personnes SET nom='toto' WHERE nom='toto'
Donc en gros, tu cherche une personne dont le nom est toto et tu va le changer en toto. Il faut avouer que modifier un nom par le même nom n'a pas beaucoup d'effet.

Soit dit en passant j'ai le plaisir de t'avertir d'un grave faille de sécurité dans ton code. N'importe quel attaquant est en mesure d'écraser toutes les données de ta table a l'aide d'une injection de SQL. A titre informatif je te donne ici un exemple de requette permettant une telle destruction :
toto' --
(l'espace a la fin est important).
Une telle requête va écraser le champ non de toutes les entrés de ta table. Bien entendu je suppose que tu dispose d'une faille similaire autre part dans ton site avec un SELECT qui affiche un résultat, un attaquant pourrais s'en servir pour dumper toutes te base et accessoirement améliorer la requette ci dessus en lui donnant les autres champs de ta table a écraser.
0
rishi24 Messages postés 2 Date d'inscription dimanche 8 février 2009 Statut Membre Dernière intervention 19 février 2009
19 févr. 2009 à 20:38
salut [auteur/TYCHOBRAHE/1596021.aspx TychoBrahe],merci de m'avoir répondu. Au fait c'est juste un devoir à rendre,je vais pas publié mon site sur le web.Néamoins c'est bien de m'avoir averti quand meme.

Pour revenir à mon problème, as tu une idée comment je peux faire pour résoudre mon pb. Peut etre en mettant des id.?
0
Rejoignez-nous