[PHP] Créer des système de votes efficaces
26 messages
• Page 1 sur 2 • 1, 2
-

Chacho - WRInaute discret

- Messages: 74
- Inscription: 16 Sep 2007
[PHP] Créer des système de votes efficaces
Hey,
J'aimerais bien savoir quel est le moyen le plus efficace pour gérer des votes sur un site.
Quel moyen utilise les sites style Youtube ( noter une vidéo ) ou DiggLike ( Voter pr un article ) pour implémenter un vote unique d'une manière pas trop contraignante.
J'ai pas envie de stocker touss les votes dans une bdd pour éviter que l'internaute ne vote plusieurs fois de suite, ca devient vite ingérable non ?
Donc il reste quoi ? Stocker dans une $_SESSION ou un cookie ?
Comment faites-vous ?
Merci

J'aimerais bien savoir quel est le moyen le plus efficace pour gérer des votes sur un site.
Quel moyen utilise les sites style Youtube ( noter une vidéo ) ou DiggLike ( Voter pr un article ) pour implémenter un vote unique d'une manière pas trop contraignante.
J'ai pas envie de stocker touss les votes dans une bdd pour éviter que l'internaute ne vote plusieurs fois de suite, ca devient vite ingérable non ?
Donc il reste quoi ? Stocker dans une $_SESSION ou un cookie ?
Comment faites-vous ?
Merci
- bozoleclown
- WRInaute impliqué

- Messages: 893
- Inscription: 24 Nov 2005
Re: [PHP] Créer des système de votes efficaces
Chacho a écrit:J'ai pas envie de stocker touss les votes dans une bdd pour éviter que l'internaute ne vote plusieurs fois de suite, ca devient vite ingérable non ?
Donc il reste quoi ? Stocker dans une $_SESSION ou un cookie ?
Si tu veux restituer le résultat des votes aux autres visiteurs, tu seras bien obligé de stocker ces votes coté serveur.
Donc oublies le cookie ou la session, qui est concu pour stocker des informations associés à un utilisateur donné.
Sinon lorsque tu veux enregistrer un vote, tu n'es pas obligé d'enregistrer chaque vote, tu peux incrémenter une valeur dans la bdd
maintenant si tu veux empecher le multivote, tu peux enregistrer un cookie sur le post du client avec l'information comme quoi il a voté. mais bon dis toi que si il supprime ses cookies, il pourra revoter...
Donc la seule solution valable c'est de stocker l'ip et d'empecher 2 votes de la même ip espacé de moins de 5 minutes par exemple.
ou faire un triplet : ip/cookie/useragent par exemple
Enfin apres on peut coupler pas mal de techniques.
-

Chacho - WRInaute discret

- Messages: 74
- Inscription: 16 Sep 2007
Oui bien sûr pour le stockage des votes, y'a pas de pb de mon coté pour ça. C'est juste pour empêcher de revoter plusieurs fois que je me demande qu'elle est la solution la plus facile.
Par exemple sur Scoopéo ou sur Youtube, on ne peut pas voter plusieurs enfin. Je sais pas si c'est un contrôle par ip ou quoi. Bref si qqun a déja du implémenter qqchose comme ça, ça pourrait aider
J'en aurais besoin pour un système de vote pour noter des vidéos et peut-être des articles plus tard.
Par exemple sur Scoopéo ou sur Youtube, on ne peut pas voter plusieurs enfin. Je sais pas si c'est un contrôle par ip ou quoi. Bref si qqun a déja du implémenter qqchose comme ça, ça pourrait aider
J'en aurais besoin pour un système de vote pour noter des vidéos et peut-être des articles plus tard.
-

Toma - WRInaute discret

- Messages: 208
- Inscription: 18 Jan 2006
Je n'étais aussi posé la question pour mon site ou les visiteurs peuvent voter pour des citations.
Pour chaque citation, je stocke dans ma base la liste des n dernières ip des votants. À chaque nouveau vote, je remplace la plus ancienne ip par la nouvelle, tout ça dans un champ text de ma BD.
En fonction de n et du nombre de votes sur mon site, je peux "régler" le temps que j'autorise entre chaque vote de la même ip pour la même citation.
J'avais préféré l'ip au cookie pour éviter les spammer motivés qui pourraient penser à effacer leurs cookies.
Voilà ma solution, c'est ptet pas la meilleure mais c'était assez simple à mettre en place. Si quelqu'un à quelque chose de mieux à suggérer, ça m'intéresse aussi.
Pour chaque citation, je stocke dans ma base la liste des n dernières ip des votants. À chaque nouveau vote, je remplace la plus ancienne ip par la nouvelle, tout ça dans un champ text de ma BD.
En fonction de n et du nombre de votes sur mon site, je peux "régler" le temps que j'autorise entre chaque vote de la même ip pour la même citation.
J'avais préféré l'ip au cookie pour éviter les spammer motivés qui pourraient penser à effacer leurs cookies.
Voilà ma solution, c'est ptet pas la meilleure mais c'était assez simple à mettre en place. Si quelqu'un à quelque chose de mieux à suggérer, ça m'intéresse aussi.
-

alliax - WRInaute impliqué

- Messages: 561
- Inscription: 29 Aoû 2005
Si tu fais voter des utilisateurs enregistrés sur ton site (youtube, scoopeo, etc) alors la c'est facile il suffit de stocker l'id de l'utilisateur avec le vote.
Sinon si tu permet a tout le monde de voter, le mieux c'est ip + cookie je pense, mais ca n'empechera pas des motivés a tricher, (proxies) c'est juste que ca rend la tache plus difficile pour les neophites donc tu aura moins de triche.
Le mieux est de ne laisser voter que des utilisateurs enregistrés mais là encore l'utilisateur peut creer plusieurs comptes pour voter plusieurs fois comme c'est le cas sur youtube (oui j'avoue...).
Sinon si tu permet a tout le monde de voter, le mieux c'est ip + cookie je pense, mais ca n'empechera pas des motivés a tricher, (proxies) c'est juste que ca rend la tache plus difficile pour les neophites donc tu aura moins de triche.
Le mieux est de ne laisser voter que des utilisateurs enregistrés mais là encore l'utilisateur peut creer plusieurs comptes pour voter plusieurs fois comme c'est le cas sur youtube (oui j'avoue...).
-

Chacho - WRInaute discret

- Messages: 74
- Inscription: 16 Sep 2007
D'accord et si je pars dans l'optique de laisser que des membres voter, je fais comment ?
Genre dans ma bdd pour mettons une vidéo, je crée un champs :
"voters" avec dedans la liste des ID des membres ?
Ex : 1,2,3,4,5,6,7
T'as une idée alliax sur la meilleure façon de stocker ça ? Sous quel format stockes-tu tes IP Toma ?
Genre dans ma bdd pour mettons une vidéo, je crée un champs :
"voters" avec dedans la liste des ID des membres ?
Ex : 1,2,3,4,5,6,7
T'as une idée alliax sur la meilleure façon de stocker ça ? Sous quel format stockes-tu tes IP Toma ?
- bozoleclown
- WRInaute impliqué

- Messages: 893
- Inscription: 24 Nov 2005
Chacho a écrit:D'accord et si je pars dans l'optique de laisser que des membres voter, je fais comment ?
Genre dans ma bdd pour mettons une vidéo, je crée un champs :
"voters" avec dedans la liste des ID des membres ?
Ex : 1,2,3,4,5,6,7
T'as une idée alliax sur la meilleure façon de stocker ça ? Sous quel format stockes-tu tes IP Toma ?
tu crées une table "voters" avec id/idVideo/idMembre/ip
et quand tu enregistres un nouveau vote tu fais un insert dans la table "voters"
et pour la protection et bien à chaque vote tu fais un "select * from voters where ip='ipduvisiteur' si tu as un retour tu dis que c pas possible
enfin tu vois l'idée now ?
-

alliax - WRInaute impliqué

- Messages: 561
- Inscription: 29 Aoû 2005
Précision, pour allèger les accès à la base de données, tu ne te sers de la table VOTERS que pour vérifier si l'utilisateur à déjà voter ou pas.
Ne fais pas un Select count(*) à chaque fois que tu affiches une vidéo pour montrer le nombre de votes!
Stocke le total des votes dans un champ de ta table videos, tu le recupere en meme temps que les autres infos de la video.
Ne fais pas un Select count(*) à chaque fois que tu affiches une vidéo pour montrer le nombre de votes!
Stocke le total des votes dans un champ de ta table videos, tu le recupere en meme temps que les autres infos de la video.
-

julien__ - WRInaute occasionnel

- Messages: 362
- Inscription: 28 Déc 2006
moi je fais comme ça. Dans ma base j'ai un champ lastip et un champ note. La personne qui vote pour un élément la note se modifie et l'ip ce met dans le champ. On ajoute une condition pour que la note s'update que si l'ip de l'utilisateur n'est pas égal à l'ip qui se trouve dans le champ lastip. Cela empêche un utilisateur de modifier la note jusqu'à ce qu'un autre soit passé par là pour voter pour le même enregistrement de la base. Ca marche bien, et sans que les utilisateurs soient enregistrés.
-

alliax - WRInaute impliqué

- Messages: 561
- Inscription: 29 Aoû 2005
julien, ton truc marche pour la plupart des gens qui n'essaient pas de tricher, ou qui essaient simplement de cliquer deux fois, voient que ca ne marche pas et laissent tomber.
Mais avec ton systeme, il suffit de voter une fois normalement, une fois en passant par un proxy, une fois normalement, une fois par un proxy, etc.
mais c'est vrai que la plus simple des protections suffit a eliminer 99% des tentatives de triches, du moment que ton site n'est pas tres connu.
Mais avec ton systeme, il suffit de voter une fois normalement, une fois en passant par un proxy, une fois normalement, une fois par un proxy, etc.
mais c'est vrai que la plus simple des protections suffit a eliminer 99% des tentatives de triches, du moment que ton site n'est pas tres connu.
-

julien__ - WRInaute occasionnel

- Messages: 362
- Inscription: 28 Déc 2006
entièrement d'accord avec ta remarque, j'en suis parfaitement conscient. On peut en effet améliorer. On peut mettre les 5 dernières ip au lieu de la dernière, et si l'ip est contenue dans la chaîne même chose. Bon d'accord si les enjeux sont commerciaux, financiers, mieux vaut s'orienter sur une structure plus solide, mais aussi plus complexe et plus lourde.
-

erestrebian - WRInaute occasionnel

- Messages: 472
- Inscription: 15 Juin 2007
Je pense que la solution de bozo est relativement facile à mettre en place et permets une sécurité accrue... Franchement, je ne pense pas que les votes de gens qui ne prennent pas la peine de s'enregistrer sur votre site soient à prendre en compte.
Il n'y a qu'une chose que je ne comprends pas c'est pourquoi tu mets id/idVideo/idMembre/ip... A mon avis, idVideo, idMembre, IP est suffisant et la clef est le couple idVideo, idMembre.
Il n'y a qu'une chose que je ne comprends pas c'est pourquoi tu mets id/idVideo/idMembre/ip... A mon avis, idVideo, idMembre, IP est suffisant et la clef est le couple idVideo, idMembre.
- bozoleclown
- WRInaute impliqué

- Messages: 893
- Inscription: 24 Nov 2005
erestrebian a écrit:Il n'y a qu'une chose que je ne comprends pas c'est pourquoi tu mets id/idVideo/idMembre/ip... A mon avis, idVideo, idMembre, IP est suffisant et la clef est le couple idVideo, idMembre.
et bien une table doit avoir une primary key d'où ma colonne 'id'
Maintenant tu peux faire une primary composite sur le champ (idmembre+idvideo) mais bon je n'aime pas les primary key composite, en terme de performance je pense que c'est pas ça non plus.
Maintenant tu améliores aussi ton intégrité mais bon pour un table de gestion de vote, je pense qu'un bon vieux id en INTEGER suffit.
-

Chacho - WRInaute discret

- Messages: 74
- Inscription: 16 Sep 2007
D'accord c'est pas mal effectivement
. J'ai pas encore le réflexe de créer plusieurs tables et j'ai tendance à vouloir tout mettre dans la même lol.
Par contre vous pensez que Youtube fais comme ça ? Si y'a une table avec une entrée pour chaque vote d'un membre par vidéo, elle doit être énorme la table non ?
Par contre vous pensez que Youtube fais comme ça ? Si y'a une table avec une entrée pour chaque vote d'un membre par vidéo, elle doit être énorme la table non ?
-

erestrebian - WRInaute occasionnel

- Messages: 472
- Inscription: 15 Juin 2007
elle est sans doute énorme... de même que la base en elle-même!
26 messages
• Page 1 sur 2 • 1, 2
Lectures recommandées sur ce thème :
- PHP - Créer un système de ping ?
- Créer un système de mot clés
- Créer un système de newsletter sur ma dédibox
- Comment créer un systeme de compte utilisateurs?
- Créer des pages php, index.php?mod=nanan!
- Utilser un CMS ou créer son "propre système" ?
- [PHP] Système de vote!
- Système d’enchère php paypal
- Système de blog php/mysql
- Problème php pour un système de sondage
Consultez la description détaillée des produits ou services de Google suivants : Google Automat
- Stratégies de mots-clés
Cet outil vous permet de créer à partir de quelques mots-clés une liste d'expressions constituées des mots pris dans tous les ordres possibles. Il sert aux analyses de positionnement et achats de mots-clés.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
