PHP/HTML - Interpréter les balises HTML d'un textarea

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : PHP/HTML - Interpréter les balises HTML d'un textarea

par Crapaud » 14 mars 2007, 18:10

En javascript, je crois que c'est la commande :
document.execCommand("CreateLink");

à tester ^^

par Coula » 14 mars 2007, 18:02

Merci ca marche niquel =)

Derniere question, connaissez vous un script pour un textarea, dans le meme principe que celui qui ajoute des balises <b></b> autour du texte sélectionner, mais qui crérait un lien dynamiquement avec <a href= ></a>

Par exemple, dans mon textarea je tape www.phpfrance.com, je le selectionne, j'appuie sur un bouton lien, et ca me le transforme en :

<a href="www.phpfrance.com">www.phpfrance.com</a>

Merci ;)

par Crapaud » 14 mars 2007, 17:07

C'est le htmlentities qu'il faut que tu retires.

L'addslashes permettra d'échapper les caractères comme les apostrophes, tout ça, tout ça.

Par contre, fais bien attention à ne garder que les balises que tu veux. (avec la commande strip_tags().

Après avoir retirer le htmlentities, n'importe quel posteur pourrait insérer les balises <script></script> <iframe></iframe> et j'en passe :)

Ça pourrait devenir assez dérangeant.

par Coula » 14 mars 2007, 17:01

Ok merci, donc c'est le htmlentities ou le addslashes qu'il faut que j'enleve ?

Et ca ne genera pas pour la conservations des apostrophes, quote, sauts de page etc ?

Ou alors il faut peut etre rajouter la commande inverse dans le code qui affiche le contenu ?

par jojolapine » 14 mars 2007, 16:58

l'erreur est là:
if(isset($_POST['contenu']))      $contenu=htmlentities(addslashes($_POST['contenu'])); 
tu transformes les < et > (notamment) en < et >, ce qui empèche leur interprétation par le navigateur...

PHP/HTML - Interpréter les balises HTML d'un textarea

par Coula » 14 mars 2007, 16:55

Bonjour,

Voila j'ai un petit probleme.
J'ai un formulaire avec un textarea, et du javascript qui me permet d'ajouter des balises type <i></i> , <b></b>
Ensuite j'enregistre le contenu du textarea dans ma BD
A la fin j'ai une derniere page dynamique qui m'affiche le contenu de ma BD, principalement le contenu du textarea du formulaire. Seulement, quand j'affiche le texte venant de ma BD, les balises ne sont pas interprétées, elles restent telles quelles et s'affichent comme du texte normal...

Comment pourrais-je remédier à ce probleme ?

Voila le code du textarea du formulaire :

Code : Tout sélectionner

<form method="post" action="page.php" name="formulaire"> Pour ajouter du contenu a votre page : <br><br><br> <input type="button" value="Lien" onClick="insertion('<link>', '</link>')"> <input type="button" value="Gras" onClick="insertion('<s>', '</s>')"> <input type="button" value="Italique" onClick="insertion('<i>', '</i>')"> <input type="button" value="Souligner" onClick="insertion('<u>', '</u>')"> <br> <label>Contenu<br /><textarea rows="10" cols="70" name="contenu"></textarea></label><br>
Voila le traitement du formulaire en PHP :
if(isset($_POST['contenu']))      $contenu=htmlentities(addslashes($_POST['contenu']));
else      $contenu="";

if(isset($_POST['alignement']))      $alignement=$_POST['alignement'];
else      $alignement="";

if(isset($_POST['position']))      $position=$_POST['position'];
else      $position="";

if(isset($_POST['positionref']))      $positionref=$_POST['positionref'];
else      $positionref="";

if(isset($_POST['type']))      $type=$_POST['type'];
else      $type="";

$sql = "INSERT INTO page(position, contenu, type, alignement, nompage)  
			VALUES('$position','".$contenu."','$type','$alignement','$page')";
			mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
			mysql_close();
			echo'<a href="select.php">Retour au formulaire</a>';
Et enfin la page qui affiche tout ca :
<?php
				include 'config.php';
				$para=mysql_query("SELECT * FROM page WHERE nompage='$page' ORDER BY position");		
				while ($par = mysql_fetch_array($para))
				{
					switch ($par['type'])
					{
						
						case "paragraphe" : echo'<div align='.$par['alignement'].' class="para">'; echo stripslashes(nl2br($par['contenu'])); echo '</div>'; break;
						case "soustitre" : echo'<div align='.$par['alignement'].' class="soustit">'; echo stripslashes(nl2br($par['contenu'])); echo '</div>'; break;
						case "titre" : echo'<div align='.$par['alignement'].' class="tit">'; echo stripslashes(nl2br($par['contenu'])); echo '</div>'; break;
						
					}
				}
				
				
?>

</body>
Merci d'avance