Bonsoir à tous,
je vous explique mon problème: je dois créer une application web pour gérer des stages pour une association. L'architecture html est faite, il me reste 'simplement' à ajouter du code php là-dessus.
J'y arrive à peu près, qu'il s'agisse d'interroger la base ou de modifier certains champs.
On m'a dit qu'il fallait _absolument_ protéger les champs texte des insertions SQL. Je ne vois pas tellement qui serait intéressé par ma base de données, mais sur de l'expérience des internautes, je vous fais confiance.
C'est à ce moment que ça coince: je peux modifier/interroger la base sans problème si les champs ne contiennent que du texte, mais si j'ajoute le caractère " (double quote), la saisie saute! Ceci, sans faire appel à une fonction de protection SQL. Ce qui m'ennuie, c'est que les utilisateurs doivent pouvoir utiliser les double quotes et autres caractères exotiques dans leur saisie (il n'est pas imaginable de leur dire qu'ils ne peuvent pas utiliser tel ou tel caractère).
Voici un bout du code:
- la récupération des infos saisies sur la page précédente:
- et enfin la requête:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 $id_poste=$_POST["id_poste"]; //l'identifiant du stage choisi $structure = ucwords($_POST['structure']); // variable 'structure' $departement = ucwords($_POST['departement']); // variable 'departement' $pole = $_POST['pole']; // variable 'pole' $adresse_structure = $_POST['adresse_structure']; // var 'adresse_structure' $cp_structure = $_POST['cp_structure']; // variable 'cp_structure' $ville_structure = ucwords($_POST['ville_structure']); // var 'ville_structure' $resp_prenom = ucwords($_POST['resp_prenom']); // variable 'resp_prenom' $resp_nom = ucwords($_POST['resp_nom']); // variable 'resp_nom' $resp_mail = $_POST['resp_mail']; // 'resp_mail' $resp_tel = $_POST['resp_tel']; // 'resp_tel'
Il s'agit sûrement d'une erreur de débutant, j'ai cherché pendant plusieurs heures une réponse sur google, sans trouver. Y compris en utilisant la fonction suivante, glanée sur le site php.net:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $query_update_poste = sprintf( "UPDATE base.stages SET structure = '$structure', departement = '$departement', pole = '$pole', adresse_structure = '$adresse_structure', cp_structure = '$cp_structure', ville_structure = '$ville_structure', resp_prenom = '$resp_prenom', resp_nom = '$resp_nom', resp_mail = '$resp_mail', resp_tel = '$resp_tel' WHERE id_poste = '$id_poste'");
Merci infiniment de votre aide!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 function quote_smart($value) { if(get_magic_quotes_gpc()) { $value = stripslashes($value); } return addslashes($value); }
T.
Partager