textarea et \r\n

Eléphant du PHP | 116 Messages

22 avr. 2010, 21:04

Bonjour,

Question assez banale,
Quand mon formulaire est soumis et que tous les champs obligatoire n'ont pas été remplis,

Je raffiche le texte entré de cette manière :

Pour un input type text :
<input name="title_vn" type="text" class="formtext" id="title_vn" size="45" <?php if(isset($imgerror) || isset($pdferror) || isset($error)) echo "value='".$_POST['title_vn']."'";?>/><?php if(isset($error)) echo $error;?>
Pour un textarea
<textarea name="presentation_vn" id="presentation_vn" cols="60" rows="6" class="formtext"><?php if(isset($imgerror) || isset($pdferror) || isset($error)) echo nl2br($_POST['presentation_vn']);}?></textarea>
Seulement pour le textarea, il m'ajoute plein de \r\n.
Ce ne sont pas des données récuperer de la base de donnée mais juste du poste précédent.
Normalement, il me semble nl2br est fait pour ca, mais peut être pas pour un textarea?

Si vous connaissez la solution je vous écoute !

Merci d'avance

Edit :
J'aimerai rajouté que dnas mon config.php, j'ai mis ceci :
if(get_magic_quotes_gpc()): 
    $_GET = array_map('stripslashes', $_GET); 
    $_POST = array_map('stripslashes', $_POST); 
    $_COOKIE = array_map('stripslashes', $_COOKIE); 
    $_REQUEST = array_map('stripslashes', $_REQUEST); 
endif; 
$_GET = array_map('mysql_real_escape_string', $_GET); 
$_POST = array_map('mysql_real_escape_string', $_POST); 
$_COOKIE = array_map('mysql_real_escape_string', $_COOKIE); 
$_REQUEST = array_map('mysql_real_escape_string', $_REQUEST); 
En retirant les deux lignes sur le $_POST et en laissant le nl2br, j'obtiens des <br /> à la place.

Eléphant du PHP | 116 Messages

23 avr. 2010, 11:08

Je cherche toujours une solution, ça m'a l'air d'être un plus compliqué que ce que je pensai, 0 réponses :afraid:

ViPHP
ViPHP | 2287 Messages

23 avr. 2010, 11:15

:arrow: pas de nl2br dans un textarea...

par contre pour éviter tout conflit si tu saisis du html dedans il faut obligatoirement remplacer les chevrons ( < > ) par les entités html équivalentes. Et si tu veux que ta page soit valide il y a aussi d'autres substitutions à faire (& => & etc...). Tu peux donc remplacer toutes les entités d'un coup avec htmlentities().
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 116 Messages

23 avr. 2010, 13:17

Merci

Cela fonctionne si j'enleve cela du config.php
$_POST = array_map('mysql_real_escape_string', $_POST);
Y aurai t'il un moyen/commande pour annulé cette ligne du config.php dans la page ou j'en ai pas besoin pour pas que j'ai de conflit, plutot que de devoir édité toute mes pages une par une.

Edit :

En faite non ce n'est pas bon , j'ai du texte en unicode, avec htmlentities ca l'a remplacé ca :
Đối với các kho nhỏ và nhiệt độ yêu cầu là dương thì nên dùng loại giải nhiệt bằng gió vì tiết kiệm không gian lắp đặt.
Hoạt động với gas Freon.
en ca :
��i v�i các kho nh� và nhi�t �� yêu cầu là dương thì nên dùng loại giải nhi�t bằng gió vì tiết ki�m không gian lắp �ặt.
Hoạt ��ng v�i gas Freon.
Ca craint pas mal :/
Modifié en dernier par kopax le 23 avr. 2010, 14:11, modifié 1 fois.

ViPHP
ViPHP | 2287 Messages

23 avr. 2010, 14:05

Merci

Cela fonctionne si j'enleve cela du config.php
$_POST = array_map('mysql_real_escape_string', $_POST);
Y aurai t'il un moyen/commande pour annulé cette ligne du config.php dans la page ou j'en ai pas besoin pour pas que j'ai de conflit, plutot que de devoir édité toute mes pages une par une.
<?php // whatever.php
$dont_escape_globals=true;
include('config.php');
<?php // config.php
if(!isset($dont_escape_globals)){
  $_GET = array_map('mysql_real_escape_string', $_GET);
  $_POST = array_map('mysql_real_escape_string', $_POST);
}
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 116 Messages

23 avr. 2010, 14:26

Merci,

en faite le htmlentities était inutile et faisait bugger mon texte en unicode,
mais avec cette ajout, cela fonctionne ;)