2009-08-15 6 views

Répondre

0

Si vous soumettez le formulaire via ajax this est une assez bonne ressource.

1

Oui. Avoir la page de traitement de formulaire enregistrer à une base de données combien de fois il a été utilisé, et le faire désactiver le formulaire lorsque x utilisations sont enregistrées.

1

Par utilisé x quantité de fois Je présume que vous voulez dire soumis x nombre de fois. Vous pouvez avoir un compteur de sessions qui s'incrémente chaque fois que le formulaire est soumis et ne réussit pas la validation, et empêche d'autres tentatives de soumission lorsque la limite est atteinte.

0

Malheureusement, il n'y a pas de méthode solide ici. Le meilleur moyen serait de stocker un cookie, mais évidemment, ils peuvent effacer les cookies. Vous pouvez essayer de créer une autre chaîne/id unique en combinant (md5) leur adresse IP avec leur user-agent (navigateur, etc), puis en stockant cela dans la base de données, mais cela va probablement nier certaines personnes qui ne devraient pas être refusé.

2

Solution rapide et sale pour PHP.

Chaque fois qu'ils visitent une page, il incrémente le compteur. Trop souvent signifie la page die() s. Vous pouvez choisir de placer ce code à un endroit où il ne sera exécuté que lorsque quelqu'un soumettra le formulaire.

Il réinitialise le compte de temps en temps. Bogues connus: L'effacement des cookies le casse, le fait d'avoir des cookies l'interrompt.

<?php 

session_start(); 

if(!isset($_SESSION['count'])) 
{ 
    $_SESSION['count'] = 1; 
    $_SESSION['first'] = time(); 
} 
else 
{ 
    // Increase the Count 
    $_SESSION['count']++; 
    // Reset every so often 
    if($_SESSION['first'] < (time() - 500)) 
    { 
     $_SESSION['count'] = 1; 
     $_SESSION['first'] = time(); 
    } 
    // Die if they have viewed the page too many times 
    if($_SESSION['count'] > 100) 
    { 
     die("You have submitted to many times"); 
    } 
} 

Ceci est donné si vous voulez une solution par utilisateur. Si c'est une chose de tout le site, il suffit de commenter et je vais supprimer.