Sur mon site, j'ai un sondage. C'est un sondage basé sur les cookies. Si un utilisateur vote, je crée un cookie avec le sondage en cours, donc il ne peut pas voter jusqu'à ce qu'un nouveau sondage soit créé. Je sais que les utilisateurs peuvent supprimer les cookies et voter à nouveau, mais ce n'est pas le problème ici. J'ai une page ajax.php qui gère le poste ajax. Voici le code:Sondage basé sur les cookies en utilisant PHP et AJAX
if(isset($_COOKIE['poll_id']) && $_COOKIE['poll_id'] == $poll_id)
{
// print message that it is already voted, show the results...
}
else
{
// update the database and create a cookie
}
Ce code fonctionne bien si le vote est fait sur un clic de bouton. Mais, j'ai commencé un javascript dans Firebug qui fait ceci:
for(var i=0;i<100;i++) {
jQuery.post('ajax.php', {
//post parameters
});
}
Et j'obtiens 100 votes. Si j'exécute à nouveau le script, il échoue, car un cookie est créé, mais il semble que si je fais 100 demandes simultanées, la vérification échoue, car je suppose que le système n'a pas le temps de créer le cookie à temps, donc toutes les mises à jour passent par.
Des suggestions sur comment résoudre ce problème?
La seule chose que je peux penser est étranglant. Vous travaillez d'une manière à autoriser seulement N nombre de votes par ip dans les mêmes secondes. J'aime 1 vote toutes les 5 secondes. Vous devrez enregistrer chaque vote séparément si vous n'êtes pas déjà et stocker IP avec cela. –