Posted December 22, 200915 yr 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,
December 22, 200915 yr Author 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)" ';
December 22, 200915 yr $id=$_GET['id']; $sql= "UPDATE `radio` SET `confirmation`='0' WHERE id='".strval($id)."';";
December 22, 200915 yr Author $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
December 26, 200915 yr 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)
March 29, 201015 yr 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)
May 27, 201015 yr Il faut garder les bonnes abitudes !!! <?php if($_GET) { $id = (int) $_GET['id']; } ?>
Archived
This topic is now archived and is closed to further replies.