IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Sécurité] empecher le multi-postage de formulaire


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 213
    Points : 104
    Points
    104
    Par défaut [Sécurité] empecher le multi-postage de formulaire
    Bonjour, savez-vous comment faire pour qu'un formulaire soit validé une fois seulement ? Je rencontre souvent dans ma base des doublons qui sont dus a des enrgistrement multiple. Je pense que c'est surement lié au fait que le visiteur puisse laisser le doigt appuyer sur la touche de validation du formulaire.

    Merci pour votre aide

  2. #2
    Expert éminent
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Points : 6 812
    Points
    6 812
    Par défaut
    Montre nous ton code....
    Mes Tutos DirectX, OpenGL, 3D : http://raptor.developpez.com/

  3. #3
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Quand tu envoie le formulaire, tu insere un champ hidden avec une valeur random que tu stoque en session.
    Quand tu recois le formulaire du compare avec ta valeur en session :
    si c'est égal alors tu traite le formulaire et tu effaces la valeur en session
    si c'est différent (ou que la valeur n'existe pas) alors tu rejetes (ignore ou message d'erreur)

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 213
    Points : 104
    Points
    104
    Par défaut
    voici ce que je mets en début de page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php 
    if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "frm_galerie")) {
      $insertSQL = sprintf("INSERT INTO galerie_sous_categorie (ID_categorie, sous_categorie) VALUES (%s, %s)",
                           GetSQLValueString($_POST['ID_categorie'], "int"),
                           GetSQLValueString($_POST['sous_categorie'], "text"));
     
      mysql_select_db($database_image, $image);
      $Result1 = mysql_query($insertSQL, $image) or die(mysql_error());
    }?>
    et voici le formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <form name="frm_galerie" id="frm_galerie" method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
     
    <input name="sous_categorie" type="text" id="sous_categorie" />
    <input type="submit" name="Submit" value="ok" />
    <input type="hidden" name="MM_insert" value="frm_galerie">
    </form>
    Merci

  5. #5
    Membre actif Avatar de hunter
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2004
    Messages : 208
    Points : 216
    Points
    216
    Par défaut
    est-ce que tu reste sur la même page ?

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 213
    Points : 104
    Points
    104
    Par défaut
    oui je reste sur la même page

  7. #7
    Expert éminent
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Points : 6 812
    Points
    6 812
    Par défaut
    Attention, si il font un reload après avoir envoyé des données, ils vont encore en rajouter vu que c'est sur la même page...
    Mes Tutos DirectX, OpenGL, 3D : http://raptor.developpez.com/

  8. #8
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    J'aime bien parler dans le vent

  9. #9
    Expert éminent
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Points : 6 812
    Points
    6 812
    Par défaut
    Citation Envoyé par Mr N.
    J'aime bien parler dans le vent
    LOL....
    Mes Tutos DirectX, OpenGL, 3D : http://raptor.developpez.com/

  10. #10
    Membre actif Avatar de hunter
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2004
    Messages : 208
    Points : 216
    Points
    216
    Par défaut
    alor pour évité ça tu peux faire avec un autre fichier puis tu redirige l'utilisateur (le plus simple)

    ou tu fais ce qu'a dit Mr N.

    ps : les formulaires comme tu as fais sont arrant tu prese 5 fois sur F5 et c'est la me***

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 213
    Points : 104
    Points
    104
    Par défaut
    Pas du tout Mr N je refléchi encore comment le mettre en place. Ton idée est très interressante.

  12. #12
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Je travaille sur un système de bug tracking. Or un utilisateur a eu sa touche [enter] qui est restée coincé. Du coup IE n'a pas arrêté de soumettre le formulaire => des milliers de bugs d'un coup d'un seul dans la base

Discussions similaires

  1. Empecher la "multi-execution" d'un programme
    Par Somato dans le forum Débuter
    Réponses: 1
    Dernier message: 27/11/2008, 16h24
  2. [C#] Empecher la fermeture d'un formulaire
    Par seito dans le forum Windows Forms
    Réponses: 7
    Dernier message: 10/04/2006, 16h33
  3. Javascript : Empecher la validation d'un formulaire
    Par otb82 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 17/01/2006, 09h46
  4. Réponses: 2
    Dernier message: 05/10/2004, 22h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo