PHP+MySQL Insérer des données de type $_REQUEST['value']

Petit nouveau ! | 1 Messages

10 juil. 2007, 19:15

Bonjour,

J'ai une petite question. Pour insérer une nouvelle ligne dans une base MySQL en PHP j'utilise le code suivant :

Code : Tout sélectionner

$result=mysql_query("INSERT INTO table VALUES ('$valeur')");
Jusque là, pas de problème.

Si la variable à insérer vient directement d'un formulaire, il vaut mieux utiliser le code

Code : Tout sélectionner

$_REQUEST['value']
pour appeler une variable.

Seulement, si je cumule ces deux codes de la manière suivante ça ne marche pas.

Code : Tout sélectionner

$result=mysql_query("INSERT INTO table VALUES ($_REQUEST['value'])");
Je sais que je pourrais contourner le problème en insérant le code suivant

Code : Tout sélectionner

$value = $_REQUEST['value'];
Mais comme j'ai 26 entrées dans ma base de données, ce n'est pas terrible. Est-ce que vous auriez un conseil ?

D'avance merci pour votre aide.

ViPHP
ViPHP | 5924 Messages

10 juil. 2007, 22:47

Mais comme j'ai 26 entrées dans ma base de données, ce n'est pas terrible. Est-ce que vous auriez un conseil ?
J'ai un conseil très simple, c'est que si tu utilises $_REQUEST['machin'] et qu'un petit malin n'envoie machin ni par cookie, ni par post, ni par get, alors tu auras une belle erreur dans ton script. C'est pour ca qu'on fait toujours ceci :
$machin = isset($_REQUEST['machin'])?$_REQUEST['machin']:'';
Avec éventuellement (c'est mieux à vrai dire), une vérification de la conformité de la donnée en même temps (son type, sa validité, ...)

Enfin, $_REQUEST c'est vague, c'est pour les flemmards qui ne font pas attention à d'où viennent leurs données, il faut préférer les tableaux $_GET, $_POST, et $_COOKIE, ce qui permet en plus d'avoir un minimum de contrôle sur son script.