[PHP] Créer des système de votes efficaces
25 messages • Page 1 sur 2 • 1, 2
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
[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 passionné

- Messages: 893
- Inscription: Jeu Nov 24, 2005 19:08
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.
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.
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.
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...).
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 passionné

- Messages: 893
- Inscription: Jeu Nov 24, 2005 19:08
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 ?
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.
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.
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.
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 impliqué

- Messages: 394
- Inscription: Ven Juin 15, 2007 12:55
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 passionné

- Messages: 893
- Inscription: Jeu Nov 24, 2005 19:08
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.
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 impliqué

- Messages: 394
- Inscription: Ven Juin 15, 2007 12:55
elle est sans doute énorme... de même que la base en elle-même!
25 messages • Page 1 sur 2 • 1, 2
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Le vainqueur du design WRI 2005
- Concours de design 2005 de WRI
- Votez pour les meilleurs WRInautes de 2007 !
- Honda va inclure Google Earth dans son système de navigation par satellite
- AdSense : des AdWords sur vos sites
- Optimiser son référencement sur Wikio
- Clics frauduleux AdWords : une ardoise de 90 M$
- WebRankInfo élu meilleur forum référencement
- Présentation rapide de Google et de son algorithme
- Google Automat = Google Base + AdWords
- PHP - Créer un système de ping ?
- Créer un système de mot clés
- Comment créer un systeme de compte utilisateurs?
- Utilser un CMS ou créer son "propre système" ?
- Créer des pages php, index.php?mod=nanan!
- [PHP] Système de vote!
- Système de blog php/mysql
- Problème php pour un système de sondage
- Cherche systeme de gestion de portail PHP/MYSQL
- performance système de commentaire/forums PHP/mySQL
- Annuaires payants UK/US efficaces
- Sous-domaines efficaces ?
- Référenceurs payants et efficaces ?
- Créer un sitemap en php
- Faire des échanges de liens efficaces
Consultez la description détaillée des produits ou services de Google suivants : Google Automat
- Combinaison 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 0 invités





le forum