Votre question

PHP .. Un peu mêlée!

Tags :
  • Sauvegarde de données
  • Programmation
Dernière réponse : dans Programmation
5 Janvier 2009 18:13:32

Salut à tous,

Voilà, je code présentement un forum et j'ai un petit problème. Je souhaite utiliser une forme de BBCode. Pour l'instant, le principe est tout simple: Tous les \n sont transformés en <br />. Le message non-formaté est sauvegardé, ainsi que le message formaté, pour faciliter l'éditage par la suite.

Seulement voila ... Lorsque j'envoie un message avec un apostrophe, il n'est pas acheminé dans la base de données. J'ai donc essayé la fonction htmlspecialchars .. Mais là ça bloque mon BBCode, les <br /> s'affichent mais aucun saut de ligne.

Quelqu'un aurait une solution pour pouvoir gérer le BBCode et les apostrophes à la fois, tout en restant dans les limites de la sécurité ??

Merci beaucoup !!!

Autres pages sur : php melee

5 Janvier 2009 21:11:06

Bonjour,

as tu essayer ceci : $texte = htmlentities($texte, ENT_QUOTES);
Il me semble que cela resoudra ton probleme.

A+ et bon courage pour la suite
Contenus similaires
6 Janvier 2009 02:49:15

Salut,

DivX_666, ta solution ne fonctionne pas... Entk, le message ne s'achemine toujours pas dans la base de données à cause de l'apostrophe.

Allstar27, je sais comment transformer les \n en <br />, mais mon problème est que si j'utilise la fonction htmlspecialchars, le <br /> s'affiche en texte, et non comme un saut de ligne ...

Avez-vous d'autres solutions?

Merci !
6 Janvier 2009 02:52:41

Pour tes apostrophes ajoute un addslashes();
6 Janvier 2009 03:16:58

Salut Allstar27.

Ça ne fonctionne toujours pas ... Je vous fait un copier-coller de mon code, peut-être que ça vous aidera :

  1. $messageFormate = addslashes($_POST['message']);
  2.  
  3. $messageFormate = preg_replace('#\n#', '<br />', $messageFormate);
  4.  
  5. $auteur = mysql_real_escape_string(htmlspecialchars($_POST['auteur']));
  6.  
  7. mysql_query("INSERT INTO messages VALUES('', '".$_POST['sujet']."', '".$auteur."', '".$_POST['date']."', '".$_POST['message']."', '".$messageFormate."')");
  8.  
  9. mysql_query("DELETE FROM statutmessages WHERE id_sujet='".$_POST['sujet']."'");


6 Janvier 2009 19:42:55

Petit up!
11 Janvier 2009 10:41:07

Salut,

tout ce que tu envoies dans la base de données devrait être échappé.
Dans ton code, tu n'échappes que $messageFormate avec la méthode addslashes.
il faudrait aussi que tu le fasses sur les autres valeurs que tu veux inserer en base : $_POST['sujet'], $_POST['message']
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS