2 votes

Comment éviter le spam de vote sur mon site PHP ?

Je suis en train de mettre en place un système de vote sur mon site web.

Les visiteurs n'ont pas besoin de se connecter pour voter le produit qui leur plaît. Mais comment puis-je les empêcher de cliquer plusieurs fois sur le bouton "J'aime" ou "J'aime pas" pour un même produit ?

J'ai l'intention de détecter l'adresse IP du visiteur pour éviter le spam de vote. Est-ce un bon moyen ?

Merci pour toute suggestion !

4voto

Kai Qing Points 13588

Non, ce n'est pas une bonne façon. L'IP peut être commun via un proxy - les collèges et les grandes entreprises par exemple.

Vous pourriez stocker un cookie, mais cela peut être facilement contourné.

La réponse concise est que le vote contrôlé devrait probablement être géré par un gestionnaire de connexion et non pas être ouvert au public. Mais si vous voulez laisser le vote ouvert au public, vous devez accepter le flot de malheurs qui peut découler de cette décision.

Je choisirais au moins des cookies. Peu de gens se soucient d'effacer les cookies juste pour jouer un système de vote, à moins qu'il y ait une raison.

1voto

Tural Aliyev Points 5466

Créez une table de base de données pour l'enregistrement des utilisateurs. Les colonnes ressembleront à ceci

ID | IP  | Browser  

L'ID sera une valeur auto-incrémentée

Obtenir l'IP avec la fonction suivante (bien sûr, ce n'est pas une méthode fiable à 100%. )

 function getIP() {
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) { //check ip from share internet
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { //to check ip is pass from proxy
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
        return $ip;
}

Et navigateur avec Javascript. Vous pouvez l'envoyer au côté php via ajax. (Nous faisons cela pour augmenter la fiabilité de la détection).

Ensuite, vérifiez cette table chaque fois que l'utilisateur essaie de voter. Vous pouvez rechercher le navigateur et l'ip. Si num_rows>0 alors empêchez (notifiez le visiteur) le vote.

1voto

dee Points 198

S'il ne s'agit pas d'un login/IP, il se peut qu'ils aient un cookie et qu'ils l'installent lorsqu'ils votent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X