Bonjour, je veux insérer un texte avec TinyMCE dans une base de données et quand les personnes font un ' ou un ", la requête SQL affiche ceci :
Warning: PDO::query() [pdo.query]: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '/p>','')' at line 1 in C:\wamp\www\Projects\Sonia_Seguin\admin\publier_2.php on line 10
Pourquoi ?
Merci d'avance pour ceux qui vont me répondre.
Nic1101
Oula je t'invite urgemment à regarde le tuto http://www.grafikart.fr/tutoriels/securite-injections-sql-59
voila, il manque les addslashes.
sinon, mets des antislash dans ton champ 'contenu' devant les guillement simple. par contre je te deconseille formellement de mettre ce code en ligne !
Là voilà :
<?php
if(isset($_POST)){
//Traitement
$titre = $_POST'titre'];
$contenu = $_POST'contenu'];
$auteur = $_POST'auteur'];
global $PDO;
$sql = "INSERT INTO articles(titre,contenu,auteur) VALUES ('$titre','$contenu','$auteur') ";
$req = $PDO->query($sql);
}
?>
@jbou43 : J'y arrivais à la sécurité c'est ma prochaine étape !
@flohw : Merci, j'aisserai avec les addslashes.
Nic1101
Eh.. Je viens d'essayer les addslashes et de mettre des antislahes et ça marche toujours pas...<br />
On pourrais me fournir un code ? J'en ai besoin pour Lundi.
Merci d'avance pour celui qui me fournira un code !
Nic1101
OK c'est parfait j'ai réussi, j'ai mis les guillemets au niveau de la requête et non pas au niveau de définition des variables ! Voici maintenant mon nouveau code :
<?php
if(isset($_POST)){
//Traitement
$titre = addslashes($_POST'titre']);
$contenu = addslashes($_POST'contenu']);
$auteur = addslashes($_POST'auteur']);
global $PDO;
$sql = "INSERT INTO articles(titre,contenu,auteur) VALUES ('$titre','$contenu','$auteur')";
$req = $PDO->query($sql);
header("Location:index.php?p=home&pub=1");
}
?>