Bonjour,
Une question bete, on écris comment une requete INSERT TO avec des variables $_POST ?
Je sais les écrire avec des concaténations mais j'ai lu sur ce forum que c'était déconseillé...
Merci
Arnaud
Bonjour,
Une question bete, on écris comment une requete INSERT TO avec des variables $_POST ?
Je sais les écrire avec des concaténations mais j'ai lu sur ce forum que c'était déconseillé...
Merci
Arnaud
C'est déconseillé parce que tu risques de te retrouver avec des injections SQL.
Pour éviter ca il faut utiliser la fonction mysql_real_escape_string() sur chaque paramètre de $_POST utilisé dans ta requete. Exemple
EDIT : Celira : c'est pas ma faute, mets toi aux expressions régulières je te laisserai tous ces posts là ^^
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $requete = "Select monchamp from matable where nom ='". mysql_real_escape_string($_POST['nom']) ."' and prenom ='" . mysql_real_escape_string($_POST['prenom']) ."'";
Bonjour
Ce qui est déconseillé, c'est de mettre le contenu brut de la variable post. On ne sait jamais ce qu'un couillon mal intentionné peut écrire dans un champ text
Pour éviter l'interprétation de code, tu peux utiliser une fonction comme mysql_real_escape_string, qui va ajouter des slashes un peu partout.
EDIT : koo ! arrête de poster de la même chose que moi en même temps que moi
Et je n'y connais pas grand-chose en regex, alors je te laisse le monopole
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.
Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]
mysql_real_escape_string empeche aussi les insertion genre javascript ou il faut utiliser en plus htmlentities?
Such is the situation in our Fallen Galaxy
Non, c'est à vous de le filtrer suivant vos besoins (strip_tags, preg_replace pour supprimer certaines balises, ...).Envoyé par Asmodean
Je vous recommande cet article : Développement web : généralités sur la sécurité.
ah ok, je ne savais pas !
mais dans mon code, deja je crois que la syntaxe n'est pas bonne :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 <?php $requete = "INSERT INTO inventaire_server VALUES ( '', '".strtoupper(presVar($_POST['inventaire_server_hostname'])."', '".presVar($_POST['inventaire_server_ip'])."', '".strtoupper(presVar($_POST['inventaire_server_numero_serie']))."', '".presVar($_POST['modele'])."', '".presVar($_POST['inventaire_server_id_os'])."', '".presVar($_POST['inventaire_server_type'])."', '".presVar($_POST['inventaire_server_mise_service'])."', '".presVar($_POST['inventaire_server_id_situation'])."', '".presVar($_POST['inventaire_server_date_reception'])."', '".presVar($_POST['inventaire_server_numero_reception'])."', '".presVar($_POST['inventaire_server_id_batiment'])."', '".presVar($_POST['inventaire_server_id_etage'])."', '".presVar($_POST['inventaire_server_commentaire_server'])."', '".presVar($_POST['inventaire_server_id_inventaire_server_id_contrat_maintenance'])."', '".presVar($_POST['inventaire_server_contrat_date_du'])."', '".presVar($_POST['inventaire_server_contrat_date_au'])."', '".presVar($_POST['inventaire_server_responsable_appli_prenom'])."', '".presVar($_POST['inventaire_server_responsable_appli_tel'])."', '".presVar($_POST['inventaire_server_responsable_appli_nom'])."', '".presVar($_POST['prenom'])."'"; ?>
Question : que fait la fonction presVar ?
Sinon, côté syntaxe de la requête ça a l'air correct. Je te conseille un affichage des erreurs lors de l'execution de la requête...
Code php : Sélectionner tout - Visualiser dans une fenêtre à part mysql_query($requete) or die ($requete.' : '.mysql_error());
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.
Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]
la fonction fais ca :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 function presVar($inPost, $inName) { echo (isset($inPost[$inName]) && !empty($inPost[$inName]))?$inPost[$inName]:''; }
c'est pour éviter les erreurs SQL si jamais j'ai un des champs qui est non renseigné. A moins qu'il existe une autre méthode...
Tu appelle mal la fonction...maintenant que tu as changé le prototype ca marche comme ca :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part presVar($_POST,'inventaire_server_id_situation')
Such is the situation in our Fallen Galaxy
c'est bizarre, sur PHPEdit, niveau coloration syntaxique, c'est comme si j'avais une erreur de syntaxe...
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 $requete = "INSERT INTO inventaire_server VALUES ( '', '" . strtoupper(presVar($_POST,'inventaire_server_hostname')) . "', '" . presVar($_POST,'inventaire_server_ip') . "', '" . strtoupper(presVar($_POST,'inventaire_server_numero_serie')) . "', '" . presVar($_POST,'modele') . "', '" . presVar($_POST,'inventaire_server_id_os') . "', '" . presVar($_POST,'inventaire_server_type') . "', '" . presVar($_POST,'inventaire_server_mise_service') . "', '" . presVar($_POST,'inventaire_server_id_situation') . "', '" . presVar($_POST,'inventaire_server_date_reception') . "', '" . presVar($_POST,'inventaire_server_numero_reception') . "', '" . presVar($_POST,'inventaire_server_id_batiment') . "', '" . presVar($_POST,'inventaire_server_id_etage') . "', '" . presVar($_POST,'inventaire_server_commentaire_server') . "', '" . presVar($_POST,'inventaire_server_id_inventaire_server_id_contrat_maintenance') . "', '" . presVar($_POST,'inventaire_server_contrat_date_du') . "', '" . presVar($_POST,'inventaire_server_contrat_date_au') . "', '" . presVar($_POST,'inventaire_server_responsable_appli_prenom') . "', '" . presVar($_POST,'inventaire_server_responsable_appli_tel') . "', '" . presVar($_POST,'inventaire_server_responsable_appli_nom') . "', '" . presVar($_POST,'prenom') . "'";
A non, ca a laire de fonctionner en compilant...
bizarre !
merci de votre aide !
thank !
Arnaud
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager