Générer formulaire avec triples guillemets

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 : Générer formulaire avec triples guillemets

Re: Générer formulaire avec triples guillemets

par gabier » 14 juil. 2014, 15:50

echo("<form class='myform' name='nom_simu' action=\"htmlentities($_SERVER['PHP_SELF'])\">");
Devient :
echo "<form class='myform' name='nom_simu' action='".htmlentities($_SERVER['PHP_SELF'])."'>";
Lis ca : http://php.net//manual/fr/language.operators.string.php
Bonjour Elie,
Merci, je devrais effectivement réapprendre la syntaxe des traitements de chaînes ...
:) Gabier

Re: Générer formulaire avec triples guillemets

par gabier » 14 juil. 2014, 15:47

Moi je sortirais ainsi (mais moi je me sers de print dans ces cas...:
$self = htmlentities($_SERVER['PHP_SELF']);
echo("<form class='myform' name='nom_simu' action='$self'>");
d'ailleurs si l'action est le script lui-même, il me semble quon peut se passerf d'action;
une autre solution est d'utiliser formaction dans le bouton...
Bonjour sirakawa,
J'aime bien cette solution, d'autant plus que j'aurai à utiliser cette variable $self plusieurs fois. J'aurais pu y penser seul...
Pour l'intérêt de PHP_SELF, cela ramène non au formulaire lui-même (je me suis mal exprimé) mais à la même page, dans laquelle j'ai plusieurs formulaires. Au lieu d'avoir n formulaires possibles et autant de pages pour traiter chacun, je reviens toujours à la même page et je fais le tri à l'entrée. Moi je trouve ça assez pratique.
Merci
:) Gabier

Re: Générer formulaire avec triples guillemets

par sirakawa » 14 juil. 2014, 13:20

L'interet de nommer une fonction par un nom de variable est pratique si cette chaine apparait plusieurs fois ...
Sinon bof quoi !

Moi aussi je peux avoir le dernier mot !
Il ne s'agit pas de nommer une fonction par un nom de variable : ça ce serait si on écrivait Define ("g", "mb_strtolower()"); par exemple.
et cette méthode aboutit aux innombrables questions sur les quotes et la concaténation... mais c'est un détail sans importance.

Re: Générer formulaire avec triples guillemets

par Elie » 14 juil. 2014, 13:08

L'interet de nommer une fonction par un nom de variable est pratique si cette chaine apparait plusieurs fois ...
Sinon bof quoi !

Moi aussi je peux avoir le dernier mot !

Re: Générer formulaire avec triples guillemets

par sirakawa » 14 juil. 2014, 13:02

Je pense qu'il ne faut JAMAIS employer de fonctions PHP à l'intérieur de syntaxes HTML ou MYSQL:
en sortant ces fonctions, on peut, si besoin, vérifier qu'on les emploie à bon escient, voire les combiner à d'autres

Re: Générer formulaire avec triples guillemets

par Elie » 14 juil. 2014, 12:28

echo("<form class='myform' name='nom_simu' action=\"htmlentities($_SERVER['PHP_SELF'])\">");
Devient :
echo "<form class='myform' name='nom_simu' action='".htmlentities($_SERVER['PHP_SELF'])."'>";
Lis ca : http://php.net//manual/fr/language.operators.string.php

Re: Générer formulaire avec triples guillemets

par sirakawa » 14 juil. 2014, 11:30

Moi je sortirais ainsi (mais moi je me sers de print dans ces cas...:
$self = htmlentities($_SERVER['PHP_SELF']);
echo("<form class='myform' name='nom_simu' action='$self'>");
d'ailleurs si l'action est le script lui-même, il me semble quon peut se passerf d'action;
une autre solution est d'utiliser formaction dans le bouton...

Générer formulaire avec triples guillemets

par gabier » 14 juil. 2014, 10:13

Bonjour à tous,

Je ne suis pas vraiment débutant, mais j'ai l'impression que mon problème n'est pas compliqué, c'est pourquoi j'ai posé la question ici.

Je veux afficher un formulaire et le traiter dans la même page donc j'utilise l'adresse $_SERVER['PHP_SELF']. Mais l'affichage est conditionnel et le nombre de champs d'input est variable. Donc je le génère entièrement en php. Le problème est que pour afficher la balise <form> j'ai besoin de 3 niveaux de guillemets
Voici ce qui ne marche pas, je ne comprends pas pourquoi (je me ramasse une erreur de syntaxe "Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier...."

Code : Tout sélectionner

echo("<form class='myform' name='nom_simu' action=\"htmlentities($_SERVER['PHP_SELF'])\">");
J'ai trouvé une "solution" qui marche, je ne comprends pas non plus pourquoi ça marche (apparemment echo dans ce cas n'a pas besoin de guillemets(?). Et puis si je mets ça dans une boucle php je crains que ça ne pose problème.

Code : Tout sélectionner

echo "<form class='myform' name='choix_sup2' action="; ?> <?php echo htmlentities($_SERVER['PHP_SELF']); ?> <?php echo("method='POST'> <input ...'> <input ...'> <input type='submit' value='Envoyer'> </form> ");
Donc j'aimerais mieux déboguer la première forme.
:) gabier