Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour,
J'ai crée une requête INSERT INTO qui fonctionne parfaitement bien jusqu'au moment ou l'utilisateur utilise les apostrophes dans le formulaire qui renseigne ma table. L'entrée dans mysql se fait avec tous les caractères spéciaux, sauf les apostrophes. Mes pages sont en UTF-8 ainsi que ma table mysql. Quelqu'un aurait-il une idée?
Hors ligne
Bonjour,
admettons que $machaine contienne le contenu contenant des apostrophes,
Bon dimanche
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Bonjour,
Merci pour votre réponse.
Malheureusement ça ne fonctionne pas. Je n'ai aucune insertion dans ma base.
Voici le bout de code en question. L'erreur est pout être ailleurs.
<?php
mysql_connect('xxx', 'xxx', 'xxx') or die("Impossible de se connecter au serveur");
mysql_select_db('xxx') or die("Base de données inexistante");
$yyy=addslashes($yyy);
$requete=mysql_query("INSERT INTO xxx VALUES('$_POST[xxx]','$_POST[xxx]','$_POST[xxx]','$_POST[xxx]','$_POST[xxx]','$_POST[xxx]','$_POST[xxx]','$_POST[xxx]','$_POST[xxx]','$_POST[yyy]') ");
écho "Bla bla bla";
?>
Encore une fois merci pour votre aide.
Bonne journée.
Cyberthommy
Dernière modification par cyberthommy (29-06-2015 11:21:58)
Hors ligne
il faux plutôt utiliser :
http://php.net/manual/fr/function.mysql … string.php
ainsi pour que cela produise un effet :
$requete=mysql_query("INSERT INTO xxx VALUES('$_POST[xxx]','$_POST[xxx]','$_POST[xxx]','$_POST[xxx]','$_POST[xxx]','$_POST[xxx]','$_POST[xxx]','$_POST[xxx]','$_POST[xxx]','".mysql_escape_string($_POST[yyy])."') ");
Hors ligne
Merci Tof 73
ça fonctionne à merveille.
Pour ceux que ça intéresse :
http://hoplaserevices.heb3.org/
Hors ligne
Bonjour,
Malheureusement ça ne fonctionne pas. Je n'ai aucune insertion dans ma base.
....
$yyy=addslashes($yyy);
$requete=mysql_query("INSERT INTO xxx VALUES('$_POST[xxx]','$_POST[xxx]','$_POST[xxx]','$_POST[xxx]','$_POST[xxx]','$_POST[xxx]','$_POST[xxx]','$_POST[xxx]','$_POST[xxx]','$_POST[yyy]') ");
Visiblement vous n'avez rien compris au code que je vous ai fourni, votre code en est une parfaite démonstration.
Deux choses essentielles à dire sur votre code :
1) on ne doit jamais insérer directement dans une requête SQL les variables publiques $_POST ou $_GET sous peine d'être vulnérable aux attaques par injection SQL pour le moins, et il y en a d'autres. MySQL_real_escape_string() ne vous protège en rien, du moins elle n'offre aucune garantie à ce niveau. De plus elle est dépréciée comme il est indiqué dans le lien fourni par tof73, donc ne l'utilisez plus sous peine de voire votre code générer des erreurs sous peu.
2) $yyy=addslashes($yyy);
Ensuite ce code ne fera strictement rien dans votre contexte, sauf à écrire $yyy=addslashes($_POST['yyy']); et de passer ensuite $yyy dans votre requête et non $_POST['yyy']. D'ailleurs vous ne l'avez peut-être pas remarqué mais il n'y a pas de variables $_POST['xxxx'] explicites dans le code que je vous ai fourni. Je suis en effet passé par des variables intermédiaires.
Si vous avez des questions n'hésitez pas, c'est toujours mieux que de transformer son site en passoire.
Bonne journée
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
sur http://php.net/manual/fr/function.addslashes.php
"Pour échapper les paramètres de base de données, vous devez utiliser les fonctions d'échappement spécifiques à votre base de données (i.e. mysqli_real_escape_string() pour MySQL"
sur http://php.net/manual/fr/function.mysql … string.php
"Cette fonction doit toujours (avec quelques exceptions) être utilisée avant d'envoyer la requête à MySQL afin de protéger vos données d'injection de caractères pouvant dévoyer cette requête."
donc dire qu'il vaut mieux utiliser addslashes que mysqli_real_escape_string est faux.
Hors ligne
Bonjour,
Je vous suggère vous aussi de lire ce que j'ai écrit
admettons que $machaine contienne le contenu contenant des apostrophes,
$machaine=addslashes($machaine);
Donc je le répète en clair addslashes a pour seul but d'échapper les apostrophes dans une chaîne de caractères et encore QUE si on est sur MySQL! Les autres caractères spéciaux n'étant pas l'objet de la question initiale, je le rappelle également.
Maintenant si vous voulez vous renseigner sur comment on doit normalement gérer les choses à ce niveau, je vous invite à lire ce post: http://www.developpez.net/forums/d12434 … tions-sql/
bonne journée.
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Pages :: 1