Protection requête préparé ??

Par Yentia, il y a 13 ans


bonjour,

J'aimerai savoir s'il faut ajouter des protections genre "addslashes, htmlentities, etc..." lorsque l'on utilise une requête préparé?

du type :

$tabs = array("nom" =>$_POST"nom"], "prenom" =>$_POST"prenom"], "email" =>$_POST"email"], "objet"=>$_POST"objet"],
                        "message" =>$_POST"message"], "societe" =>$_POST"societe"], "dateday" =>date("d/m/y"));

        $req = $DB->prepare('INSERT INTO contact (id,nom,prenom,email,societe,objet,message,date) VALUE (null, :nom, :prenom, :email, :societe, :objet, :message, :dateday);');
        $req->execute($tabs);

merci de votre aide.

7 réponses

luffysan, il y a 13 ans

Normalement avec PDO, tu peux utiliser bindParam, bindValue et bindColumn qui fait tout ça.

Yentia, il y a 13 ans

merci de ta réponse, cependant j'ai rechercher ce que tu m'as dit mais je n'ai toujours pas compris comment je peux faire pour protéger mon bout de code.

Comme tu peux le constater mes données arrive dans un tableau, c'est ce qui me pose problème pour faire un bind, je sais pas comment m'y prendre.

charlo14, il y a 13 ans
$tabs = array("nom" =>$_POST"nom"], "prenom" =>$_POST"prenom"], "email" =>$_POST"email"], "objet"=>$_POST"objet"],
                        "message" =>$_POST"message"], "societe" =>$_POST"societe"], "dateday" =>date("d/m/y"));

        //permet de recuperer les valeurs du tableaux sous forme de variables (ex: $nom)
        extract($tabs);

        $req = $DB->prepare('INSERT INTO contact (id,nom,prenom,email,societe,objet,message,date) VALUE (null, :nom, :prenom, :email, :societe, :objet, :message, :dateday);');

        //on echappe chaque valeur suivant son type donc repetes la ligne pour toutes les variables
        $req->bindParam(':nom', $nom, PDO::PARAM_STR);

        $req->execute($tabs);

http://php.net/manual/en/pdostatement.bindparam.php

Yentia, il y a 13 ans

D'accord je te remercie de ton aide,

j'ai encore une petite question auquel tu pourrais m'éclairer peut être
pourquoi tu utilise bindParam et non pas bindValue ? quelle est la différence ?stp

merci encore

Yentia, il y a 13 ans

D'accord merci de ton aide.

je vais regarder concernant ton sujet