rishi24
Messages postés2Date d'inscriptiondimanche 8 février 2009StatutMembreDernière intervention19 février 2009
-
19 févr. 2009 à 16:35
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDerniè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
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") ;
}
.......
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 201312 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.
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 201312 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.
rishi24
Messages postés2Date d'inscriptiondimanche 8 février 2009StatutMembreDernière intervention19 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.?