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

7 réponses


MrGuillou
Réponse acceptée

Oula je t'invite urgemment à regarde le tuto http://www.grafikart.fr/tutoriels/securite-injections-sql-59

Flohw
Réponse acceptée

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 !

on peut avoir la requete ?
tu n'aurais pas oublié un addslashez ou un truc dans ce gout la ?

Nic1101
Auteur

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);
}
?>
Nic1101
Auteur

@jbou43 : J'y arrivais à la sécurité c'est ma prochaine étape !
@flohw : Merci, j'aisserai avec les addslashes.

Nic1101

Nic1101
Auteur

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

Nic1101
Auteur

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");
}
?>