SuperMerguez Posté(e) le 28 mai 2012 Partager Posté(e) le 28 mai 2012 Salut les INpactiens, je vous poste un petit message sur un cas particulier auquel je suis confronté : je débute en PHP et je suis en train de faire un formulaire de mise à jour de profile pour un site que j'essaie de monter tout seul comme un grand sans l'aide d'un CMS. Voici ce que je souhaite faire : Mettre à jour les données contenu dans un formulaire. Voici le morceau de php en question $new_nick = isset($_POST['nickname']);//sélection de l'id user$sql = 'SELECT id FROM profile';$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());$data = mysql_fetch_assoc($req);$id = $data['id'];// on met à jour le formulaire$update = "UPDATE profile SET u_nickname='$new_nick', WHERE id='$id'";exec($update); Lorsque que je remplace la variable $new_nick = isset($_POST['nickname']); par $new_nick = ' toto '; je n'ai pas de problème, l'opération se déroule comme il faut, mais quand j'essaie de récupérer la nouvelle valeur dans le formulaire ça efface la donnée qui est présente voici le formulaire : <form type="POST" action="editer.php"><fieldset><input type="text" name="nickname" value="<?php echo ''.$data['u_nickname'].''; ?>" /><input type="text" name="email" value="<?php echo ''.$data['u_email'].''; ?>" /><input type="text" name="date-of-birth" value="<?php echo ''.$data['u_birthday'].''; ?>" /><input type="text" name="place" value="<?php echo ''.$data['u_place'].''; ?>" /><input type="text" name="setup" value="<?php echo ''.$data['u_setup'].''; ?>" /><input type="hidden" name="id" value="<? echo ''.$data['id'].''; ?>"><input type="submit" value="editer" /></fieldset></form> J'ai surement du oublier quelque chose d'important... si vous pouviez m'aiguiller sans forcément me mâcher le travail ça serait cool ! A+ Lien vers le commentaire Partager sur d’autres sites More sharing options...
BreizFenrir Posté(e) le 28 mai 2012 Partager Posté(e) le 28 mai 2012 Ton isset sur la première ligne de ton code PHP va retourner soit true soit false (Cf. documentation). Bon après, vu ton code ça ressemble plus à une erreur de copier/coller qu'à une vraie mauvaise utilisation de la fonction. Après, si tu veux du vrai code propre et sécurisé (oh la belle injection SQL...), il te reste un poil de travail. Mais comme tu débutes, ce que tu as mis ici est déjà bien. C'est lisible et clair, ce qui n'est malheureusement pas toujours le cas. :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
SuperMerguez Posté(e) le 28 mai 2012 Auteur Partager Posté(e) le 28 mai 2012 Oui je suis conscient que pour l'instant c'est pas secure, je fais juste des essais pour m'entrainer à l'aide de tuto mais visiblement je manque de jugeotte :X Bon je vais faire un tour sur la doc, j'y verrais déjà plus clair ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
maequise Posté(e) le 30 mai 2012 Partager Posté(e) le 30 mai 2012 Effectivement y a une belle injection à faire ici, mais ça se règle facilement . Formulaire: <form method="post" action="editer.php"><input type="text" name="nickname" value="<?php echo ''.$data['u_nickname'].''; ?>" /><!--blablabla --></form> BDD: //Connexion sécurisée://Tes variables:$host = 'ton_host';$login = 'ton_login';$pass = 'ton_pass';$db = 'ta_db';$new_nick = "$_POST['nickname'];//Définition d'option:$options = array();$options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;//La connexion à la DB:$pdo = new PDO("mysql:host=$host;dbname=$db", $login, $pass, $options);$req = $pdo->prepare('UPDATE ta_db SET tes_options');$req->execute(array('u_nickname' => $_POST['nickname'])); Voila ça te donne une idée de ce qu'il y a à faire, et surtout ça te donne une connexion sécurisé, sans possibilité d'injection . Maintenant à toi de le travailler à ta sauce :). Cordialement, Mae. Lien vers le commentaire Partager sur d’autres sites More sharing options...
SuperMerguez Posté(e) le 30 mai 2012 Auteur Partager Posté(e) le 30 mai 2012 Ok super de m'avoir aidé ! je vais tester ce que tu as marqué quand je rentre . Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.