Problème d'embranchement après une formulaire

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 : Problème d'embranchement après une formulaire

par sofaz » 15 juin 2006, 09:07

J'ai fait comme tu dis : pas de page récapitulative,
et c'est effectivement la meilleure solution.
Il me reste un souci de bouton pour impression,
mais ce sera pour un autre sujet ...

Pour info, le site sera demain en test à www.selce.fr/dossiers/petitchaumont/ à la version v6
(en attendant tu peux voir la v5)

Merci guilt92

par sofaz » 13 juin 2006, 12:14

C'est-à-dire que j'ai un problème de place : la charte graphique exclue le défilement vertical et je suis obligé de scinder en 2 pages :
1/ coordonnées (moins de 10 champs)
2/ commande (tableau 40 données dont 15 éditables)
Il m'en faut donc une troisième récapitulative à laquelle j'attache une feuille de style spécifique à l'impression.
Alors c'est vrai que je peux faire ça dès la seconde page, tu as peut-être raison. Je vais sans doute faire ça.
Merci pour ton aide.

par guilt92 » 13 juin 2006, 11:48

Est-ce que les données transmises par $_POST se limitent aux champs inclus dans le formulaire (entre <form> et </form>) ou est-ce que les champs d'autres formulaires du même document html sont transmis ?
A ma connaissance les valeurs transmises par POST sont uniquement celle entre les balises <form> et </form> du formulaire sur lequel on a activé le submit.

Cela étant es tu réellement obligé d'avoir une autre page pour le récapitulatif ? Ne veux tu pas tout faire sur la même en fonction du bouton cliqué ?

par sofaz » 13 juin 2006, 11:45

Merci guilt92 de ta réponse
Ta première solution soulève bien mon problème : je ne veux pas utiliser d'usine à gaz seulement pour transmettre des infos d'une page à une autre.
La seconde solution me pose un gros problème d'accessibilité : si javascript est désactivé : impossible de faire ce que je veux.
Mais ta réponse me fait penser à autre chose : peut-être que je peux utiliser $_SESSION ? Je vais voir ça ...
Et ça me fait penser à autre chose qui résoudrait mon problème de fait :
Est-ce que les données transmises par $_POST se limitent aux champs inclus dans le formulaire (entre <form> et </form>) ou est-ce que les champs d'autres formulaires du même document html sont transmis ? Je vais aussi voir ça.

par guilt92 » 13 juin 2006, 11:12

Bonjour,

Il existe 2 solutions à ton problème :

Soit en php, tu donnes des noms différents par l attribut name à tes boutons submit, et ainsi quand tu rappelles ta page tu testes quel bouton a été cliqué avec
if(isset($_POST["bouton1"])) {
//consequence1
}
else if(isset($_POST["bouton2"])) {
//consequence2
}

Le probleme dans cette solution est que dans un des cas tu dois changer de page, et les variables ne seront pas transmises donc il te faut faire une sauvegarde temporaire dans une base de données par exemple avant la redirection.

La 2eme solution est le javascript, qui te permet de diriger ton formulaire vers des pages différentes :
<head>
<script language="javascript">
function envoie(adresse){
  document.formulaire.action = adresse;
  document.formulaire.submit();
}
</script>
</head> 

<body> 
<form name="formulaire" method="post">
<input name="nom"/>
<input type="button" value="Valider" onclick="javascript:envoie('verification.php')" />
<input type="button" value="Recalculer" onclick="javascript:envoie('<?php echo $_SERVER["PHP_SELF"];?>')"/>
</form>
Voila, j espere que ca t aidera :)

Problème d'embranchement après une formulaire

par sofaz » 12 juin 2006, 19:38

Bonjour,
Je débute ici, donc merci d'excuser mes maladresses.
Mon problème :
J'ai créé un site entièrement généré par une page index.php (plus beaucoup d'includes et de fichiers de contenu...)
Or une des pages générées doit être un formulaire avec deux suites possibles :
- soit recalculer (avec action="..." dirigé vers lui-même),
- soit passer à une autre page de récapitulation.
J'ai l'approche suivante :
1/ première idée : deux formulaires, mais problème : un seul des deux contiendra les contenus utiles et pourra les envoyer ...
2/ donc seconde possibilité : un seul formulaire qui contient 2 boutons, mais là, problème : je ne peux pas avoir action vers 2 formulaires,
3/ je prévois donc l'appel d'un seul fichier php qui traite l'embranchement par un header(Location:...), sauf que là, $POST ne fait pas suivre les informations.
4/ il me reste donc comme solution que le action="..." soit dirigé vers la propre page, et que celle-ci traite le choix de la seconde page par un header(Location:...)
Je trouve cette solution vraiement laide, sans compter que je vais donc mélanger dans le header ce choix avec celui du Content-Type pour xhtml 1.1 ou xhtml 1.0 traité en text/html.
En plus, ce sont des tests qui seront systématiquement faits pour toutes les pages, donc inutiles dans 99% des cas.
Ma question est donc à plusieurs volets, au choix :
1/ Comment passer les mêmes infos par deux submits de formulaires différents ?
et/ou
2/ Comment diriger deux submits d'un même formulaire vers deux pages différentes
et/ou
3/ Comment passer les données $_POST d'une page à la suivante.
Si quelqu'un a une réponse à une de ces questions, ça m'arrangerait beaucoup.
Merci d'avance.