Récupération d'un formulaire et enregistrement sur BDD

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Récupération d'un formulaire et enregistrement sur BDD

par Calimero » 20 juin 2009, 21:24

De rien, n'oublie pas de mettre ton sujet Résolu ;-)

A noter que dunbar avait presque trouvé le problème et m'a mis sur la piste. Tu peux donc le remercier aussi ;-)

par rusmaster » 20 juin 2009, 21:09

enregistrement ajouté avec succès :
Quoi dire de mieux, merci
Je pense que j'aurai pu plancher des heures.

Promis je jeterai un coup d'oeil sur la sécu

par Calimero » 20 juin 2009, 20:57

Tu marques un point là 8-)

Pour la peine je vais être plus explicite. Le colorisateur de phpfrance n'étant pas le seul à se faire avoir là-dessus, une bonne pratique souvent recommandée est de sortir les variables des chaînes pour y voir plus clair.
// avant
mysql_query ("INSERT INTO mabdd (col1,col2,col3....)VALUES ($xx,$yy,$zzz...)");
// après
mysql_query ("INSERT INTO mabdd (col1,col2,col3....)VALUES (".$xx.",".$yy.",".$zzz."...)");
Il te reste encore les guillemets simples à mettre autour des valeurs. (et tant qu'à faire, on n'oublie pas de bien respecter les espaces autour des mots-clé sql, comme values)
mysql_query ("INSERT INTO mabdd (col1,col2,col3) VALUES ('".$xx."','".$yy."','".$zzz."')");

Et comme on est des gens bien, on pense à la sécurité et on se protège des injections sql, comme ceci :
mysql_query ("INSERT INTO mabdd (col1,col2,col3) VALUES ('".mysql_escape_string($xx)."','".mysql_escape_string($yy)."','".mysql_escape_string($zzz)."')");
Et là c'est sensé marcher mieux. Est-ce le cas ? :wink:

par rusmaster » 20 juin 2009, 20:50

mysql_query ('INSERT INTO mabdd (col1,col2,col3....)VALUES ($xx,$yy,$zzz...)'); 
mysql_query ("INSERT INTO mabdd (col1,col2,col3....)VALUES ($xx,$yy,$zzz...)"); 
Entre simple ou double, même en colorisant, je vois pas trop la différence. :oops:

je viens de passer foetus à l'instant, si ça peut être une circonstance attenuante.

par Calimero » 20 juin 2009, 20:40

Bonjour,

Ton erreur c'est de mettre des variables telles quelles (d'ailleurs, faudra te renseigner sur les dangers de l'injection SQL...) dans une chaîne en guillemets simples.

Il faut aussi protéger le contenu de chaque chaîne à insérer dans la requête par des guillemets simples, ce que tu n'as pas fait.

Ce qui nous envoie à des erreurs PHP et non SQL, et tu l'aurais vu tout de suite grâce à la colorisation syntaxique de ce forum si tu avais utilisé des balises PHP autour du code que tu as posté.

par dunbar » 20 juin 2009, 20:39

ou un truc du genre

par rusmaster » 20 juin 2009, 20:37

Visualisation des colonnes
Array ( [Field] => ID [Type] => int(11) [Null] => NO [Key] => PRI [Default] => [Extra] => auto_increment )
Array ( [Field] => Pseudo [Type] => varchar(15) [Null] => NO [Key] => [Default] => [Extra] => )
Array ( [Field] => Pays [Type] => varchar(15) [Null] => YES [Key] => [Default] => [Extra] => )
Array ( [Field] => Region [Type] => varchar(15) [Null] => YES [Key] => [Default] => [Extra] => )
Array ( [Field] => Email [Type] => varchar(30) [Null] => NO [Key] => [Default] => [Extra] => )
Array ( [Field] => Age [Type] => int(4) [Null] => YES [Key] => [Default] => [Extra] => )
Array ( [Field] => Message [Type] => varchar(50) [Null] => YES [Key] => [Default] => [Extra] => )
Array ( [Field] => Jour [Type] => date [Null] => NO [Key] => [Default] => [Extra] => )
Visualisation des données

Affichage par "tableau indicé"
id pseudo pays région email age message jour
1 $pseudo $pays $region $email 0 $message 0000-00-00


Enregistrement des données

Récupération.......

non enregistré : Unknown column '$pseudo' in 'field list'
L'enregistrement id=1 c'est que j'ai essayé de mettre mes variables $pseudo entre quote("), bien sur il l'a enregistré comme chaine pas comme variable

par dunbar » 20 juin 2009, 20:30

$xx doit être la donnée pas la colonne, .
Euh oui je sais :?
la colonne col1 existe bien elle.
Je voulais dire que tu essaye l'insertion de la valeur de $xx dans une colonne qui n'existe pas ou donc il y a une erreur dans le nom ou un truc du genre.

par rusmaster » 20 juin 2009, 20:26

$xx doit être la donnée pas la colonne, la colonne col1 existe bien elle.

par dunbar » 20 juin 2009, 20:23

A mon avis la colonne n'existe pas

Récupération d'un formulaire et enregistrement sur BDD

par rusmaster » 20 juin 2009, 20:12

Bonjour,

Je souhaite récupérer les réponses d'un formulaire pour les enregistrer dans une base de données.
Jusqu'à présent les réponses étaient stockées dans un fichier plat.
Formulaire en POST.
Je récupère les réponses par $xx = $_POST[xx]
et je code :
mysql_query ('INSERT INTO mabdd (col1,col2,col3....)VALUES ($xx,$yy,$zzz...)');

Retour :

Unknown column '$xx' in 'field list'

Quelqu'un peut me dire quelle boulette je fais, merci