Aller au contenu

Un Get qui a du mal


tata2

Messages recommandés

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

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

  • 3 mois après...
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) :eeek:

Bonjour les possiblités d'injection SQL...  :francais:

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)  :eeek:

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...