Eléphant du PHP |
120 Messages
30 janv. 2013, 13:34
Ce que tu fais est extrêmement dangereux et permet de faire des injections SQL. De plus, tu utilises l'extensions MySQL qui est dépréciée à partir de PHP5.5 et ne va sans doute plus exister dans PHP5.6 ou PHP6. Tu devrais donc changer pour PDO ou mysqli.
Pour ce qui est de ton problème, il faut tout d'abord que tu mettes une liste de blanche de champs qui doivent être définis :
$allowed_fields = array("username", "email", "autre_champ");
Ensuite, tu dois récupérer les champs que le formulaire envoie :
$added = array();
foreach ($allowed_fields as $field) {
if (!isset($_POST[$field])) {
throw new \Exception(sprintf("Il manque le champ %s", $field));
}
$added[$field] = $_POST[$field];
}
Une fois que tu as récupéré ces champs, tu dois construire la requête et de l'envoyer à la base de données :
$sql = "insert into NOM_de_la_table (%s) values (%s)";
foreach ($added as $field => $value) {
$input[":" . $field] = $value;
}
$PDO->prepare(sprintf($sql, "`" . implode("`,`", array_keys($added)) . "`", implode(",", array_keys($input))));
$PDO->execute($input);