tata2 Posté(e) le 22 décembre 2009 Partager Posté(e) le 22 décembre 2009 Bonjour à tous, Alors voilà j' ai ce code : gestion.php : <?php require('config.php'); mysql_connect(DB_HOST, DB_LOGIN, DB_PASS); mysql_select_db(DB_BDD); echo "Voici toutes les webradios non confirmés :"; echo "<br/>"; echo "<br/>"; $sql= "SELECT * FROM radio WHERE confirmation='0' "; $req=mysql_query($sql) or die ("Erreur SQL ! <br/>".$sql.'<br/>'.mysql_error()); while($data=mysql_fetch_assoc($req)) { echo "{$data['nom']}"; echo " -- <a href=\"{$data['site']}\">{$data['site']}</a>"; echo " -- <a href=\"http://webradios.fr.nf/radio/{$data['url']}.php\"> Allez a la page de la radio </a>"; echo "-- <a href=\"confirmation.php?id={$data['id']}\"> Confirmer la webradio </a>"; echo "<br/>"; } ?> confirmation.php : <?php require('config.php'); mysql_connect(DB_HOST, DB_LOGIN, DB_PASS); mysql_select_db(DB_BDD); $_GET['id']=$id; $sql= 'UPDATE radio SET confirmation="1" WHERE id="$id" '; $req=mysql_query($sql) or die ("Erreur SQL ! <br/>".$sql.'<br/>'.mysql_error()); header("Location: http://webradios.fr.nf/"); ?> Lorsque j' execute le code J' ai bien le get qui marche mais lors de l' execution SQL, rien n' est changer a l' ID du get (11 est mon ID de test)... Donc j' ai tester a la main le code (direct dans phpmyadmin): UPDATE radio SET confirmation="1" WHERE id="11" Et tout marche bien ... Donc je pense qu' il y a un problème a la variable $id, mais je ne le trouve pas, j' ai essayer plusieurs chose qui résulte a un echec ... J' ai essayer genre ceci : <?php require('config.php'); mysql_connect(DB_HOST, DB_LOGIN, DB_PASS); mysql_select_db(DB_BDD); $_GET['id']="$id"; $sql= 'UPDATE radio SET confirmation="1" WHERE id=$id '; $req=mysql_query($sql) or die ("Erreur SQL ! <br/>".$sql.'<br/>'.mysql_error()); header("Location: http://webradios.fr.nf/test/creat/gestion.php"); ?> Mais ce code m' indique : Erreur SQL ! UPDATE radio SET confirmation="0" WHERE id=$id Unknown column '$id' in 'where clause' Merci d' avance, Lien vers le commentaire Partager sur d’autres sites More sharing options...
tsubasaleguedin Posté(e) le 22 décembre 2009 Partager Posté(e) le 22 décembre 2009 j'ai pas lu ton code mais généralement les debutants oublies les strval(int) Lien vers le commentaire Partager sur d’autres sites More sharing options...
tata2 Posté(e) le 22 décembre 2009 Auteur Partager Posté(e) le 22 décembre 2009 Ok je vais essayer merci Mais ce que je ne comprend pas c' est que j' ai exactement le meme code (C/C) sur une autre page qui fait la même chose et sa marche nikel. Je vais essayer avec strval(int) Edit : Cela ne marche pas avec : $sql= 'UPDATE radio SET confirmation="0" WHERE id="strval($id)" '; Lien vers le commentaire Partager sur d’autres sites More sharing options...
tsubasaleguedin Posté(e) le 22 décembre 2009 Partager Posté(e) le 22 décembre 2009 $id=$_GET['id']; $sql= "UPDATE `radio` SET `confirmation`='0' WHERE id='".strval($id)."';"; Lien vers le commentaire Partager sur d’autres sites More sharing options...
tata2 Posté(e) le 22 décembre 2009 Auteur Partager Posté(e) le 22 décembre 2009 $id=$_GET['id']; $sql= "UPDATE `radio` SET `confirmation`='0' WHERE id='".strval($id)."';"; Ah Oups Désolé effectivement ça marche mieux avec la concanétation Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Amour Posté(e) le 26 décembre 2009 Partager Posté(e) le 26 décembre 2009 Dans l'absolu, la partie suivante n'a aucun intérêt : $id=$_GET['id']; Autant utiliser directement $_GET['id'] Aussi, il serait bon de tester avec isset() si la variable existe avant (ça évite des soucis) Lien vers le commentaire Partager sur d’autres sites More sharing options...
piwi82 Posté(e) le 29 mars 2010 Partager Posté(e) le 29 mars 2010 Dans l'absolu, la partie suivante n'a aucun intérêt : $id=$_GET['id']; Autant utiliser directement $_GET['id'] Aussi, il serait bon de tester avec isset() si la variable existe avant (ça évite des soucis) Bonjour les possiblités d'injection SQL... C'est bien d'attribuer la valeur de _GET['id'] à une variable, mais il faudrait vérifier que cette dernière est valide avant de l'insérer dans une requête. Apparemment il s'agit d'un id, donc d'un nombre entier. Tu peux facilement le vérifier avec la fonction is_int($id) ou une expression régulière comme preg_match('/^[0-9]+$/',$id). Pensez à ne jamais insérer directement des variables PHP dont vous ne maîtrisez pas le contenu dans une requête SQL, c'est l'une des premières source d'attaque d'un site (et ça peut faire très mal) Lien vers le commentaire Partager sur d’autres sites More sharing options...
hollow971 Posté(e) le 27 mai 2010 Partager Posté(e) le 27 mai 2010 Il faut garder les bonnes abitudes !!! <?php if($_GET) { $id = (int) $_GET['id']; } ?> 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.