retour sur une page apres une saisie

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 : retour sur une page apres une saisie

par fab » 30 mai 2005, 22:18

Et le tag [Résolu] :p ?

par FAbrice » 30 mai 2005, 21:55

Ô grands maitres du PHP,

je vous remercie de votre aides et de vos conseils!!

rdv à mon prochain pb :lol:
FAb

par rami » 29 mai 2005, 14:35

Dans les traitements des données, ne faire aucun echo, aucun affichage, auncun espace avant le balise <?php.

Car la fonction header envoit des en-tetes au navigateur. Si tu fais un affichage, les en-têtes sont envoyées, donc la fonction header ne fonctionnera pas et te renverra un message d'erreur disant que les headers ont déjà été envoyés ;)

par FAbrice » 29 mai 2005, 14:30

tu entends quoi par
rien n'a encore été envoyé au navigateur
?

par Cyrano » 29 mai 2005, 14:10

ha c'est vrai, tu as raison rami, je faisais ça par rapport à un système que je suis obligé de monter comme je l'ai indiqué parce que j'ai déjà du html envoyé au moment du test, je n'ai donc pas le choix. Mais si effectivement rien n'a encore été envoyé au navigateur, alors on peut faire comme ça.

par rami » 29 mai 2005, 14:07

Pas forcément. Ton action renvoit sur la même page que l'affichage de ton formulaire, mais tu peux faire un truc du genre:
<?php

if(isset($_POST)){
//traitement des données saisies

//si traitement ok, on redirige vers une autre page
header("location: tapage.php");
exit;
}
//affichage du formulaire avec message d'erreur
Ensuite tu peux récupérer la valeur des champs saisis ainsi:

Code : Tout sélectionner

<input type="text" name="saisie" value="<?php if(isset($_POST['saisie'])) echo $_POST['saisie']; ?>">

par Cyrano » 29 mai 2005, 13:38

Ce que tu voudrais faire n'est pas impossible, mais il faudra utiliser des variables de session.:

Tu as donc deux pages, celle du formulaire et celle où tu veux aller si le formulaire est validé. Dans ton attribut action, mets le chemin vers cette seconde page mais tu dois transférer la validation du formulaire vers cette seconde page. Au début de cette seconde page, tu récupères les données que tu mets dans des variables de session (explication plus loin). Tu fais la validation:
- Le formulaire est valide: tu affiches le contenu de cette seconde page;
- Le formulaire est invalide, tu fais une redirection vers le formulaire où tu récupère ce qui a été saisi dans les variables de session. Au début de ta page formulaire, tu testes si des variables de session ont été initialisées et tu affiches éventuellement avant le formulaire un message d'erreur personnalisé.

Pourquoi avec des variables de session ? parce que sinon, avec la redirection, tu perds le contenu da ta variable $_POST et ce que l'internaute à saisi aurait disparu, il devrait donc tout saisir à nouveau complètement, ce qui va l'agacer royalement.

par FAbrice » 29 mai 2005, 13:28

alut chef

ca veut donc dire qu'une fois que j'ai saisie mes données dans mon formulaire, je me peux pas afficher une autre page? c donc ca?

FAb

par Cyrano » 29 mai 2005, 13:13

Non, rien, ou encore un attribut "id" dans la balise <form>, mais action pointe vers la page en cours, tu ne peux pas mettre une seconde url.

par FAbrice » 29 mai 2005, 13:06

salut,

je vais encore passer pour une truffe mais mon action est déja occupée:
</p> 
  <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
  <table width="773" border="0"> 
    <tr> 
je peux rajouter un truc a ce code???

merci de votre aide,
FAb

par sadeq » 26 mai 2005, 12:33

il faut tout simplement mettre le nom de la page destination dans la clause ACTION= du formulaire

par Cyrano » 26 mai 2005, 08:33

Salut FAbrice,
Loin de moi l'idée d'avoir l'air plus idiot que ne suis, mais je comprends pas la question... comme après un certain temps je finis par perdre le fil, j'ai un peu de mal à suivre. Afficher une autre page à partir d'où et dans quelle conditions ?

Essaye de tracer un schéma de ce que tu veux faire, quelles pages sont à prendre en compte et comment tu voudrais pouvoir naviguer pour obtenir quoi au juste ?
:?:

par FAbrice » 26 mai 2005, 08:27

bonjour

je suis vraiment dsl du delais mais je viens vous dire que ca fonctionne :lol:
merci de votre aide.

une petite question, si je veux afficher une autre page que le page de saisie, cette méthode ne fonctionne pas (j'espère que je ne dis pas de connerie car cela voudrait dire que je n'ai rien compris!!!), quelle pourrait etre la synthaxe pour afficher automatiquement une page???

merci de de votre aide en tout cas,
FAb

par sadeq » 24 mai 2005, 11:51

C'est l'action dans la clause <FORM.. qui te permet de réafficher le même formulaire après son enregistrement.
Les VALUE's et le SELECTED permettent simplement de garder les anciennes valeurs saisies à leur emplacement.

par pjl » 24 mai 2005, 09:16

Un formulaire, ca se décompose en 3 parties :
- le formulaire lui-même ;
- le traitement des donnée du formulaire ;
- la page ou tu veux aller après traitement des données.

Ces trois parties peuvent ou non se trouver sur une seule et même page.
Ca correspond en partie au code donné par Sadeq.
A la validation, le formulaire se réaffiche et les données saisies par l'utilisateur sont conservées dans les champs de saisie mais il n'y a pas de traitement des données.


PS : quand tu balances du code, essaye de faire le tri, ca ne sert à rien de balancer tout le code d'une page. Ne donne que le code strictement nécessaire.