Bonjour,
Je m'embrouille un peu dans mon système de commentaire, donc je viens mander votre aide.
J'explique le fonctionnement du/des formulaires en quelques mots, avant de décrire le problème :
1) Il y a un textarea (et d'autres champs mais on simplifie).
2) Le visiteur clique "prévisualiser".
3) La page se recharge avec :
-le texte tel qu'il apparaitra et en dessous un bouton valider (le texte du commentaire est dans un input hidden).
- le texte dans un nouveau formulaire qui permet de modifier le commentaire.
4) Arrivé là, le visiteur valide son commentaire, ou le modifie puis le prévisualise de nouveau etc...
L'affichage fonctionne très bien.
Maintenant ça devient embêtant :
Quand le visiteur valide clique sur prévisualiser, je filtre le tout avec htmlentities() avant de l'afficher, comme expliqué au dessus.
Ca ça fonctionne, c'est pour la sécurité.
Ensuite je place un stripslashes() sur les variables juste avant de les afficher, que ce soit dans l'espace prévisualisation ou dans le formulaire permettant de modifier le message (cela pour éviter les l\è, par exemple).
Cela ça fonctionne aussi.
Ensuite pour permettre le retour à la ligne, j'utilise nl2br()
Cela fonctionne mal, car le htmlentites() désactive le nl2br, ce qui fait la chose suivante:
Le visiteur remplie le formulaire en sautant des lignes.
il prévisualise.
Son message s'affiche correctement dans l'espace de prévisualisation, mais dans le formulaire de modification, les </br> apparaissent. Cela n'est pas encore trop gênant.
Par contre si le visiteur prévisualise de nouveau son message, alors les </br> apparaissent cette fois dans l'espace de prévisualisation, et deux fois dans le formulaire de modification;
Question évidente : comment conserver le saut de ligne, sans qu'il n'apparaissent sous forme de balise du coté du visiteur, dans l'espace de prévisualisation (qui est une simple DIV mise en forme en CSS) et dans le champ de formulaire permettant la modification?
Merci d'avance[/list]
Partager