begin process at 2008 07 25 13:13:21
1 216 226 membres
190 nouveaux aujourd'hui
14 180 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CLASSE POUR EMPÊCHER LES SOUMISSIONS MULTIPLES DE FORMULAIRE


Information sur la source

Catégorie :Class et Objet ( POO ) Classé sous : formulaire, envoi, multiple, objets, classe Niveau : Expert Date de création : 16/09/2005 Vu / téléchargé: 4 660 / 790

Note :
9 / 10 - par 3 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

Description

Je vous soumets un code que j'ai développé, il y a quelque temps et qui tourne notamment sur mon site.

Cette classe permet ainsi de sécuriser vos formulaires contre l'envoi multiple mais aussi contre certaines forme de hacking.

Conclusion

Le principe est simple, on inclut dans chaque formulaire un champ caché  auquel, on affect un ID unique et lors du traitement des données, on vérifie si l'ID renvoyé est bien celui attendu.

Pour le fichier d'exemple, il devrait fonctionner chez tout le monde.
Remplissez le formulaire et postez-le une première fois; Jusque là, le comportement est normal.

Pressez le bouton [Reload] de votre explorer pour reposer le formulaire une seconde fois.


(c)Le fichier ID_Mmgr.php peut être redistribué et utilisé librement, pour autant que les mentions d'auteur ne soient pas modifiées.
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

  • signaler à un administrateur
    Commentaire de janhsh le 16/09/2005 14:46:48

    Note importante:
    Pour pouvoir essayer l'exemple, placer les fichiers comme suit:
         <votre répertoire de test>/index.php  
         <votre répertoire de test>/Includes/ID_Mmgr.php

  • signaler à un administrateur
    Commentaire de MATHIS49 le 16/09/2005 16:24:39

    Vraiment sympa, je pense que je vais l'utiliser sur mon site ;)

  • signaler à un administrateur
    Commentaire de Anthomicro le 16/09/2005 20:03:03

    Salut,

    c'est du code expert ça ?

  • signaler à un administrateur
    Commentaire de FhX le 16/09/2005 23:12:09

    Eviter le double envoi :
    <?php
    if ( isset($_SESSION['deja_postee']) && $_SESSION['deja_postee'] ) {
    die ('Posté qu\'une seule fois seulement !');
    } else {
    $_SESSION['deja_postee'] = true;
    }

    Pas besoin de classe ni rien :)

  • signaler à un administrateur
    Commentaire de Anthomicro le 16/09/2005 23:12:49

    bah ouais ^^

  • signaler à un administrateur
    Commentaire de massacr le 17/09/2005 09:46:20

    lol, c'est vrai, mais pourquoi faire simple quand on peut faire compliqué ?

    #     //Test des autres erreurs
    #      if ($_POST['Champ1']=='')
    #          {
    #              $ErrrorMsg.="<li>vous devez remplir le champ 1</li>";
    #          }
    #      if ($_POST['Champ2']=='')
    #          {
    #              $ErrrorMsg.="<li>vous devez remplir le champ 2</li>";
    #          }
    #      if ($_POST['Champ3']=='')
    #          {
    #              $ErrrorMsg.="<li>vous devez remplir le champ 3</li>";
    #          }
    #      if ($_POST['Champ4']=='')
    #          {
    #              $ErrrorMsg.="<li>vous devez remplir le champ 4</li>";
    #          }
    T'es sur qu'il n'y avait rien de plus simple ???

  • signaler à un administrateur
    Commentaire de Anthomicro le 17/09/2005 09:52:56

    en plus si le mec met un espace sa vérification est caduque :-)

  • signaler à un administrateur
    Commentaire de janhsh le 18/09/2005 11:13:01

    massacr et Anthomicro:  
    Le but ici, c'est de montrer comment utiliser la classe ID_Mngr et ou appeller les méthodes $ID_Mngr->IsValidID(), $ID_Mngr->Clear_ID() et $ID_Mngr->GetUnique_ID()

    Je n'ai pas chercher à blinder l'entrée des champs contre les espaces mais un trim() pour cela.... c'est juste un exemple pour utiliser la classe en question.


    FhX:  
    Explique moi dans ton bout de code comment tu fait quand pour permettre a un utilisateur de réutiliser une seconde fois le formulaire ou un autre.
    car une fois que ta variable se session "deja_postee" postée sera initialisée, le visiteur ne saura plus poster aucun formulaire...  

  • signaler à un administrateur
    Commentaire de Drakstar le 18/09/2005 12:47:07

    Très bon code,
    je pense aissi que je vais l'utiliser sur mon site.

  • signaler à un administrateur
    Commentaire de sdominici le 06/10/2005 00:37:15

    Coucou,

    pour info, il y a aussi ce code là : http://www.phpcs.com/code.aspx?ID=32312

    fonctionnement identique... pour PHP 5

    Ciao.

  • signaler à un administrateur
    Commentaire de FhX le 13/04/2006 01:18:51

    Met un timeout dans ta session :)

    <?php
    if ( isset($_SESSION['time_post']) && $_SESSION['time_post'] < ( time() + 3600) ) {
    die ('Posté qu\'une seule fois seulement !');
    } else {
    $_SESSION['time_post'] = time();
    }
    ?>

    Et hop, c'est reglé :) Tu ne peux poster qu'une fois toutes les x secondes.
    C'est entièrement suffisant :)

Ajouter un commentaire

Pub



Appels d'offres

Animation Flash alimen...
Budget : 6 000€
Creation portail video
Budget : 3 000€
Site de e-commerce
Budget : 5 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS