conserver le contenu d'un textArea après le submit

yoric
Invité n'ayant pas de compte PHPfrance

15 févr. 2007, 13:44

Bonjour,
voici mon code qui fonctionne mais pas à 100% :
<?php
  if (isset($_POST['texte'])) {
    $ancientexte=$_POST['texte'];
  }
  echo "<form action='page.php' method='POST'>";
  echo "<textArea cols=110 rows=5 name='texte'>".$ancientexte."</textArea></br>";
  echo "<input type=submit value='OK'>";
  echo "</form>";
?>
En effet grace à ce code, quand je clique sur le bouton "ok" la page se recharge sans me vider le contenu du textArea (c'est ce que je veux!) SAUF qu'il y a un problème : j'ai besoin de remplir le textArea avec un texte qui débute par "<?xml version="1.0" encoding="ISO-8859-1"?>" et avec ce contenu j'obtient une erreur en cliquant sur "ok" : "La page XML ne peut pas être affichée ..." IDEM si je remplis le textArea avec du code PHP : par exemple si je fait un copier coller du code PHP ci-dessus dans le textArea puis que je clique sur ok, j'ai un phénomère bizarre qui se produit et qui altère ma page.
J'aimerai que le texte ne soit pas "interpreté", et qu'il soit conservé lorsque je clique sur "ok", est-ce possible ? :shock:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 févr. 2007, 14:42

Essaye d'utiliser la fonction htmlentities() pour convertir les caractères spéciaux en entités html, sur ta variable $ancientexte avant de l'afficher. Ils ne devraient dès lors plus être interprétés par le navigateur :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

yoric
Invité n'ayant pas de compte PHPfrance

15 févr. 2007, 15:20

Effectivement si j'utilise cette fonctione en ligne 3 :
$ancientexte=htmlentities($_POST['texte']);
Alors je n'ai plus d'erreurs en remplissant mon textArea avec du code ! Merci pour cette astuce.
En revanche il me met toujours (je ne l'avais pas encore signalé) des backslash \ devant tous les guillemets : si je saisis " dans le textArea et que j'appuye sur ok il va me le remplacer par \" et si j'ai ' il me le remplace par \'
je pourrais ajouter en ligne 4
$ancientexte=str_replace("\\","",$ancientexte);
mais à ce moment là, si mon textArea originel contient des basckslash, ils disparaîtrons, et ça devient un peu de la bidouille pour les rétablir...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 févr. 2007, 16:09

C'est que ton serveur doit être parametré avec magic quotes d'activé, ce qui protège automatiquement les données envoyées en ajoutant un \ devant les apostrophes, guillemets et antislash (en gros, c'est comme si tu utilisais la fonction addslashes() sur toutes tes variables)

Par conséquent, tu peux utiliser la fonction inverse, stripslashes() avant le htmlentities(), sans soucis pour retirer les \ :) Pas de soucis s'il y a un antislash dans le texte saisi car celui-ci aura également été protégé et doublé :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

15 févr. 2007, 16:52

Merci Ryle, cela répond à mon problème (j'ai fait des diff sous PSPad de plusieurs fichiers sources avant et après le clique du bouton ok et ce sont bien 100% les mêmes à chaque fois).
Je t'offre un cyber verre de remerciement :D

le code final devient donc :
<?php
  if (isset($_POST['texte'])) {
    $ancientexte=stripslashes(htmlentities($_POST['texte'], ENT_NOQUOTES));
  }
  echo "<form action='stats.php' method='POST'>";
  echo "<textArea cols=110 rows=5 name='texte'>".$ancientexte."</textArea></br>";
  echo "<input type=submit value='OK'>";
  echo "</form>";
>
PS: n'étant pas (encore) inscrit, je ne peux mettre "résolu", mais je le considère comme tel.[/b]

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 févr. 2007, 16:59

Et ben alors ?! qu'est-ce que tu attends pour t'inscrire ? hmm ?? :)
Bon je colle le résolu en attendant, mais c'est bien parce que c'est toi ! ;)
Je t'offre un cyber verre de remerciement :D
Classe !! :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 2 Messages

15 févr. 2007, 17:33

Hop me voilà tout fraîchement inscrit.
Super l'accueil ici. je vais beaucoup développer en Php et donc il est possible que je squatte un peu. Je tacherai d'aider les gens zaussi si je sais faire, pour que ce ne soit pas que dans un sens. Merci à tous d'être dans ce merveilleux monde de la programmation et de le rendre agréable et accessible à tous.