Empecher une soumission multiple de forumlaire

Empecher une soumission multiple de forumlaire - PHP - Programmation

Marsh Posté le 09-05-2003 à 13:29:31    

J'ai crée un formulaire d'ajout de liens http dans une base.
Après avoir validé le forumlaire, le lien est inséré dans la base mysql.
Vu que j'utilise une seule page php pour affichier le forumlaire (lien.php) et traiter l'insertion (lien.php?action=add), si je fait un refresh de la page après validation du forumlaire, IE demande si je veux reposter le formulaire.  
D'ou possibilté d'insérer plusieurs fois le meme lien.
Comment éviter que IE me redemande si je re-soummettre le formuliare ?
j'ai essayé de faire des unset sur les variables du formulaire mais sans succès
 
unset ($email, $titre, $adresse, $description);
ou encore  
unset ($_POST['email'], $_POST['$titre'], $_POST['$adresse'], $_POST['$description']);
ne marchent pas.
 
Merci pour votre aide

Reply

Marsh Posté le 09-05-2003 à 13:29:31   

Reply

Marsh Posté le 09-05-2003 à 13:32:27    

Fais une page intermédiaire pour l'insertion dans la base.
 
Ensuite tu n'as qu'à faire un redirect avec un header HTML sur la liste et tu n'as plus de problème.


Message édité par MagicBuzz le 09-05-2003 à 13:33:25
Reply

Marsh Posté le 09-05-2003 à 13:33:24    

passe les une par une  :o  

Code :
  1. unset ($email);
  2. unset ($titre);
  3. unset ($adresse);
  4. unset ($description);


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 09-05-2003 à 13:34:11    

redrat a écrit :

J'ai crée un formulaire d'ajout de liens http dans une base.
Après avoir validé le forumlaire, le lien est inséré dans la base mysql.
Vu que j'utilise une seule page php pour affichier le forumlaire (lien.php) et traiter l'insertion (lien.php?action=add), si je fait un refresh de la page après validation du forumlaire, IE demande si je veux reposter le formulaire.  
D'ou possibilté d'insérer plusieurs fois le meme lien.
Comment éviter que IE me redemande si je re-soummettre le formuliare ?
j'ai essayé de faire des unset sur les variables du formulaire mais sans succès
 
unset ($email, $titre, $adresse, $description);
ou encore  
unset ($_POST['email'], $_POST['$titre'], $_POST['$adresse'], $_POST['$description']);
ne marchent pas.
 
Merci pour votre aide


 
Pourquoi IE ? qu'est que le navigateur a a foutre la dedans ?
 
Tu peux tres bien essayer de verifier le repost via une variable globale, ou faire un test sur ta table pour eviter de rentrer 2 fois la meme valeur....

Reply

Marsh Posté le 09-05-2003 à 13:35:22    

MagicBuzz a écrit :

Fais une page intermédiaire pour l'insertion dans la base.
 
Ensuite tu n'as qu'à faire un redirect avec un header HTML sur la liste et tu n'as plus de problème.


 
C'est vrai que tu peux faire comme cela en effet.  
Mais une page intermediare, c pas tres propre, surtout si le projet prend un certain volume

Reply

Marsh Posté le 09-05-2003 à 13:40:11    

@Magic buzz : je vais opter pour ta solution, merci
@simogeo : unset ($email, $titre, $adresse, $description); est équivalent a un unset pour chaque variable.
@samuelp : ie n'a rien a voir la dedans c'est juste que naviguateur internet c'est un peu plus chiant à écrire :)

Reply

Marsh Posté le 09-05-2003 à 13:42:10    

redrat a écrit :


@simogeo : unset ($email, $titre, $adresse, $description); est équivalent a un unset pour chaque variable.


 :)  je ne savais pas, merci


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 09-05-2003 à 14:13:22    

Comment modifier la lign suivante pour que la redirection se fasse automatiquement au bout de 3 seconds ?
 
header("Location: liens.php" );

Reply

Marsh Posté le 09-05-2003 à 14:14:19    

TAIST
 
Chais pas, le forum ici écrit ça :
 
    <meta http-equiv="Refresh" content="0;url=forum2.php3?post=36455&cat=10&page=1&cache=cache&interface=&config=&p=&sondage=&owntopic=&subcat=#bas" />
 
Quand on poste un topic.


Message édité par MagicBuzz le 09-05-2003 à 14:15:50
Reply

Marsh Posté le 09-05-2003 à 14:27:45    

J'ai essayé  
header("http-equiv='Refresh' content='3;url=liens.php'" );
mais ca passe pas

Reply

Marsh Posté le 09-05-2003 à 14:27:45   

Reply

Marsh Posté le 09-05-2003 à 14:39:11    

encore merci
avec  
echo "<meta http-equiv='Refresh' content='3;url=liens.php' />";
ca passe

Reply

Marsh Posté le 09-05-2003 à 14:54:55    

redrat a écrit :

J'ai essayé  
header("http-equiv='Refresh' content='3;url=liens.php'" );
mais ca passe pas


 
header("Location: liens.php" );
 
sinon je plussoie samuelp, c'est pas propre la page intermédiaire et tu auras le même problème avec des back probablement... Le mieux étant vraiment de vérifier si c'est déjà dans la DB ou pas ou de foutre un tag en session pour l'empecher de le reposter.


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Marsh Posté le 09-05-2003 à 15:01:54    

J'ai une seule page qui affiche et traite le forumulaire
Par contre j'ai du utiliser une deuxième page pour afficher le message "Lien bien inséré" et faire la redirection vers liens.php.
 
De toute manière, il y a un circuit de validation des liens soumis par les utilisateurs donc.
 
je vais quand meme ajouter la vérification d'existence ou non dans la base.

Reply

Marsh Posté le 09-05-2003 à 21:36:14    

en javascript y a une fonction replace qui fait comme location mais qui ne mets pas la première page dans l'historique donc le back ne ramène pas vers la première page
 
ça permet d'éviter les pbs de back

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed