Bonjour, bonsoir, Après m'être lamentablement mis la honte sur mon dernier problème, j'espère que sur celui-ci il n'en sera pas de même. Mais ça m'étonnerais pas lol. Mais bon je suis pas un expert. J'ai suivi le tutoriel sur l'intégration du bbcode et j'aimerais l'intégrer aux commentaires d'un article. Alors ça fonctionne sauf que : Si j'écris avec des apostrophes ou des guillemets ça plante totalement et me renvois une erreur SQL qui me dit : [code]Erreur SQL ! INSERT INTO comment (pseudo,url,mail,contenu,news_id) VALUES ('test','test','test','j'écris avec un apostrophe','13') 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 'écris avec un apostrophe','13')' at line 1[/code] C'est un petit peu chiant, non ? Le code de l'affichage des commentaires : [code]<?php $conv = array(
'[b](.?)[\/b]' => ' $1', '[i](.*?)[\/i]' => '$1', '[u](.*?)[\/u]' => '<u>$1</u>', '[img](.*?)[\/img]' => ' ', '[url=([^]]*)](.*)[\/url]' => ' $2' ); $sql="SELECT \ FROM comment WHERE news_id=$id ORDER BY id ASC"; $req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error()); while($data2=mysql_fetch_assoc($req)){ echo "------------------
"; echo $data2["pseudo"]; $data2["contenu"] = htmlentities($data2["contenu"],ENT_NOQUOTES,'UTF-8'); foreach($conv as $k=>$v){ $data2["contenu"] = preg_replace('/'.$k.'/',$v,$data2["contenu"]); } echo '

' . $data2["contenu"] = nl2br($data2["contenu"]) . '
'; } ?>[/code] le code de la page addcom.php [code]<?php $cryptinstall="admin/crypt/cryptographp.fct.php";
include $cryptinstall;

require "config.php"; 
mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);

if(isset($_POST) && isset($_POST['pseudo']) && isset($_POST['url']) && isset($_POST['mail']) && isset($_POST['contenu']) && chk_crypt($_POST['code'])){
extract($_POST);

$sql="INSERT INTO comment (pseudo,url,mail,contenu,news_id) VALUES ('$pseudo','$url','$mail','$contenu','$news_id')";
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'  

'.mysql_error()); header("Location:voir.php?id=$news_id"); } else{ echo "Il manque des informations dans votre commentaire, ou des informations sont fausses ;)."; } ?>[/code] Donc voilà, si quelqu'un à une idée du pourquoi qu'il veut pas manger des apostrophes je suis preneur. Merci d'avance à toutes personnes qui répondront ^^

2 réponses


MrGuillou
Réponse acceptée

Bonsoir,
Tu nous montre un exemple parfait de faille de sécurité de type injection SQL
Je t'invite à regarde le Tutoriel Vidéo PHP : Sécurité, Les injections SQL

ste
Auteur

Okay effectivement après le rajout du addslashes($contenu) ça fonctionne.
Merci beaucoup de m'avoir mis sur la voie :)