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

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 : conserver le contenu d'un textArea après le submit

par yoric » 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.

par Ryle » 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 !! :)

par Invité » 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]

par Ryle » 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é :)

par yoric » 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...

par Ryle » 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 :)

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

par yoric » 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: