Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/08/2008, 09h22   #1
Membre éprouvé
 
Homme Marwan Rabbaa
Technophile Web
Inscription : mai 2007
Messages : 930
Détails du profil
Informations personnelles :
Nom : Homme Marwan Rabbaa

Informations professionnelles :
Activité : Technophile Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2007
Messages : 930
Points : 412
Points : 412
Envoyer un message via MSN à sliderman Envoyer un message via Yahoo à sliderman
Par défaut Éviter la resoumission

Bonjour,

Je voudrais savoir s'il existe un moyen de contourner le message POSTDATA (quand on rafraichi une page contenant un formulaire).
Je voudrais que les données soit envoyées qu'une seule fois, même en appuyant sur F5.
Je sais que s'il on utilise une page externe pour traiter les données envoyées (attribut action du <form>) et qu'on redirige le navigateur sur la page du formulaire, on a pas ce problème.

Mais j'ai pour strict consigne de rédiger tout dans la même page (traitement + affichage), oui je sais c'est crade mais bon c'est ce que ma hiérarchie veut (je ne voudrais pas la contrarier )

Merci pour vos réponse.
__________________
http://aldorande.miniville.fr/ind
Fedora 8, eclipse 3.3 sur x86_64
--------------
Colorer votre code php
sliderman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2008, 11h36   #2
Membre éclairé
 
Avatar de TucSale
 
Inscription : novembre 2005
Messages : 265
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : novembre 2005
Messages : 265
Points : 301
Points : 301
Envoyer un message via MSN à TucSale
bonjour,

Plusieurs solutions s'offrent a toi, parmis elles :
- AJAX: tu envois tes données via http_request
- Variable de session: tu modifies ta variable de session lors de ton premier envoie pour éviter qu'il refasse le traitement lors des suivant
__________________
Tuc l'Original, On ne peut que l'aimer
TucSale est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2008, 11h39   #3
Membre éprouvé
 
Homme Marwan Rabbaa
Technophile Web
Inscription : mai 2007
Messages : 930
Détails du profil
Informations personnelles :
Nom : Homme Marwan Rabbaa

Informations professionnelles :
Activité : Technophile Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2007
Messages : 930
Points : 412
Points : 412
Envoyer un message via MSN à sliderman Envoyer un message via Yahoo à sliderman
Citation:
Envoyé par TucSale Voir le message
- AJAX: tu envois tes données via http_request
ma hiérarchie ne veut pas non plus, à ce qu'il parait ça ferait ramer les PC de nos clients mexicains
Citation:
Envoyé par TucSale Voir le message
- Variable de session: tu modifies ta variable de session lors de ton premier envoie pour éviter qu'il refasse le traitement lors des suivant
pas très secure ce truc
__________________
http://aldorande.miniville.fr/ind
Fedora 8, eclipse 3.3 sur x86_64
--------------
Colorer votre code php
sliderman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2008, 11h55   #4
Membre Expert
 
Inscription : janvier 2007
Messages : 1 452
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 1 452
Points : 1 914
Points : 1 914
Simple.
Lorsque tu soumets ton formulaire il peut se produire deux choses.

Le formulaire est validé. Le formulaire n'est pas validé car mal remplit.

Lorsque le formulaire est validé tu fais un header location sur une page de confirmation ou sur le formulaire lui même (peu importe). Ce header va te permettre de ne pas renvoyer les données lors d'un F5. En fait sa force le navigateur à zapper les données post.

Au contraire si le formulaire n'est pas validé on ne fais pas de redirection car on veut que le navigateur sauvegarde nos données post entre deux soumissions.
Et dans ce cas là faire un F5 n'à pas d'importance pour toi, le développeur, puisque le formulaire n'est pas validé -> pas d'enregistrements en base.

a plus
kaymak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2008, 12h00   #5
Membre éclairé
 
Avatar de TucSale
 
Inscription : novembre 2005
Messages : 265
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : novembre 2005
Messages : 265
Points : 301
Points : 301
Envoyer un message via MSN à TucSale
EDIT: trop lent désolé

ou bien
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
//session_start();
/* Test si le formulaire est validé */
//if(isset($_POST['BTENVOI']) && $_POST['BTENVOI'] == 'envoyer' && isset($_SESSION['MaVar'])){
if(isset($_POST['BTENVOI']) && $_POST['BTENVOI'] == 'envoyer'){
	/* Traitement */
	header('location: index.php');
	//$_SESSION['MaVar'] = true;
}
?>
<html>
<body>
<form method="post">
	<input type="submit" value="envoyer" name="BTENVOI" />
</form>
</body>
</html>
Le gros inconvénient est que tu ne pourras pas afficher de message après la validation
__________________
Tuc l'Original, On ne peut que l'aimer
TucSale est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2008, 12h12   #6
Membre éprouvé
 
Homme Marwan Rabbaa
Technophile Web
Inscription : mai 2007
Messages : 930
Détails du profil
Informations personnelles :
Nom : Homme Marwan Rabbaa

Informations professionnelles :
Activité : Technophile Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2007
Messages : 930
Points : 412
Points : 412
Envoyer un message via MSN à sliderman Envoyer un message via Yahoo à sliderman
Citation:
Envoyé par kaymak Voir le message
Simple.
Lorsque tu soumets ton formulaire il peut se produire deux choses.

Le formulaire est validé. Le formulaire n'est pas validé car mal remplit.

Lorsque le formulaire est validé tu fais un header location sur une page de confirmation ou sur le formulaire lui même (peu importe). Ce header va te permettre de ne pas renvoyer les données lors d'un F5. En fait sa force le navigateur à zapper les données post.
pb : si je fais un header ...
php me pete un cable en me disant que je l'ai déjà envoyé (header commun pour la mise en forme)
__________________
http://aldorande.miniville.fr/ind
Fedora 8, eclipse 3.3 sur x86_64
--------------
Colorer votre code php
sliderman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2008, 14h01   #7
Membre Expert
 
Inscription : janvier 2007
Messages : 1 452
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 1 452
Points : 1 914
Points : 1 914
ouè sa c'est un autre problème.
En l'occurrence c'est un problème maintes fois traités dans le forum.
Une piste que je privilégierais perso ce sont les foncitons ob_* cf http://fr.php.net/manual/fr/ref.outcontrol.php

bye
kaymak est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h02.


 
 
 
 
Partenaires

Hébergement Web