Empecher plusieurs votes: cookies ? [PHP/MYSQL][RESOLUE] - PHP - Programmation
Marsh Posté le 30-05-2003 à 11:11:09
le coup de l'ip ca n'a pas l'air mal comme principe...
Pour les cookies, et l'ID de la personne, c'est une id de session ou une id permanente ?
Marsh Posté le 30-05-2003 à 11:20:50
chopper l'ip n'est pas une bonne solution si elle est stockée de manière permanente.
L'idéal, c'est de combiner cookie + ip.
Dans le cookie, tu as une ip du posteur qui est mise en relation avec une table posteur/article
Pour les ips, tu les choppes dans une table séparée ip/date qui vire les entrées vieilles de plus d'un jour, comme ça, tu évites que deux personnes ne se choppent la même ip par le FAI (le même jour, c'est assez invraissemblable).
Mais de tout façon, tu ne peux pas faire du sur à 100%.
Marsh Posté le 30-05-2003 à 11:53:15
gizmo a écrit : chopper l'ip n'est pas une bonne solution si elle est stockée de manière permanente. |
Par exemple, HFR utilise qu'elle systeme pour les sondages ?
J'ai mal compris l'utilité de la table ip/date, mais bon, je vais cojiter un peu
Bon si j'ai bien compris pour la 1er partie :
Une table avec comme champ: ip,id_article,id(clé primaire).
Et donc j'écris dans les cookies de l'utilisateur l'ip qu'il avait utilisé lors de l'utilisation du sondage.
Je suis ok là ?
Marsh Posté le 30-05-2003 à 12:14:40
sur hfr, c'est plus simple, seul les inscrits peuvent voter, donc c'est une bête table id/sondage.
Marsh Posté le 30-05-2003 à 12:25:43
gizmo a écrit : sur hfr, c'est plus simple, seul les inscrits peuvent voter, donc c'est une bête table id/sondage. |
ha oui je vois...
Mais ca doit etre casse tete a faire des comptes et tout ca.
Enfin bon, surtout que je n'en vois pas l'interet pour l'instant sur mon site.
En fait, le liens, si ca aide peut vous aider a m'aider : http://siteiado.free.fr, j'ai pas encore mis en ligne le truc du sondage pour noter les différents articles,j'attends que le probleme soit reglé.
Marsh Posté le 30-05-2003 à 14:05:48
Tu fais une table ip/sondage/date .
Et tu vires toujours les trucs de plus de 24h.
Marsh Posté le 30-05-2003 à 14:14:14
l'ip, qu'elle soit stockée de maniere permanente ou pas est une MAUVAISE idée...
- les gens derriere un proxy
- les qui partagent une connection (en entreprise ou à la maison)
Marsh Posté le 30-05-2003 à 14:16:59
the real moins moins a écrit : l'ip, qu'elle soit stockée de maniere permanente ou pas est une MAUVAISE idée... |
pour les proxys, 80% d'entre eux permettent de passer outre, idem pour la plupart des partages de connexion (et puis, les gens n'ont pas à surfer sur son site au boulot! )
Marsh Posté le 30-05-2003 à 14:19:23
gizmo a écrit : |
ce n'est pas parce que tu n'es pas obligé d'utiliser le proxy de ton fai que tu ne le fais pas.
il est configuré par defaut chez bcp de gens et ils ne le changent pas puisqu'il ne savent meme pas ce que c'est
Marsh Posté le 30-05-2003 à 14:23:27
C'est clair que ce n'est pas la meilleure solution mais une des plus simples. Le nombre de personnes derrière un proxy est assez peu élevé et ils auront qu'à voter le lendemain
Marsh Posté le 30-05-2003 à 14:25:25
Belgique a écrit : C'est clair que ce n'est pas la meilleure solution mais une des plus simples. Le nombre de personnes derrière un proxy est assez peu élevé et ils auront qu'à voter le lendemain |
c'est faux
(tu crois que chaque machine dans une salle info en fac ou lycée à son ip propre? )
Marsh Posté le 30-05-2003 à 16:16:51
ils sont pas au lycée pour voter na ...
Je propose une solution à son problème étant donnée qu'il ne veut pas de section membres. Puis quel est el but du sondage? Permettre à tout le monde de voter ou dégager une tendance?
Il aura combien de votes par jour? 200? 500? Peu de chances que ces deux personnes soient dans la même salle. Maintenant si son site c'est pour un lycée et qu'ils ont tous la même ip dans le lycée
Marsh Posté le 30-05-2003 à 16:46:24
Belgique a écrit : Maintenant si son site c'est pour un lycée et qu'ils ont tous la même ip dans le lycée |
ben justement c un truc d'école non?
sa premiere solution était pas pire (le cookie disait que le mec avait voté sur tel ou tel sondage)
Marsh Posté le 30-05-2003 à 19:39:49
Alors,
But du site : Ramener des ados, pour etre lu par les ados, mais aucun rapport avec le college, puisque nous sommes une équipe comprenant des personnes de différents college.
Donc, je ne pense pas que certains voteront depuis le college, et puis bon, s'pas extremement grave.
Mais je pense que vous avez mal compris, je veux que les utilisateurs ne peuvent voter qu'une seul fois sur chaque article.
Donc je ne vois pas l'interet du champ "date" dans la bd, ni dans le cookies.
Donc moi je vois ca comme ca :
Une table sondages comprenant:
-id(clé primaire), comme d'hab
-idarticles(l'identifiant de l'article avec lequel le sondage est en rapport)
-l'ip du l'utilisateur.
Et donc dans les cookies j'écris:
[IP],[idarticles]
donc par exemple, si je vote pour l'article 8:
128.00.0523.0.203,8
Et donc je compare:
Code :
|
Voilà, c'est correct ca ?
Marsh Posté le 30-05-2003 à 19:52:09
je commence a bosser dessus là,j'aimerais savoir comment un cookies peut durer indéfiniment(ou du moins jusqu'a que l'utilisateur les suprimes..)
setCookie("login","toto",time()+360000000000);
Je mets plein de 0 ? ou ya une fonction ?
Marsh Posté le 30-05-2003 à 20:46:16
Another problem:
voilà un petit morceau de code
Code :
|
Le probleme est :
J'ai plusieurs article, donc les informations de mes cookies font s'écrire les une au dessus des autres.
Donc je ne vois pas trop comment faire.
Peut etre faire un truc du style
SetCookie ("idarticle[]",$id, time()+150); pour que cela soit considéré comme un array, mais bon , j'ai jamais encore vu ca, et puis..un array dans un fichier texte...
Enfin, j'ai fais du "google" a fond...mais rien.
Merci d'avance
edit:peut etre quelque chose comme ca:
Code :
|
avec la concaténation.
Marsh Posté le 30-05-2003 à 23:35:31
tu peux voir du coté de serialize() pour passer ton array
Marsh Posté le 31-05-2003 à 13:09:42
finalement j'ai laissé tombé les cookies et je viens de faire ca :
Code :
|
Voilà,pourrais je avoir votre avis sur cette technique ?
Et est ce que ce code est "propre" ?
Marsh Posté le 31-05-2003 à 13:17:06
Code :
|
Sinon, c'est sur que les ip c'est pa sle mieux étant donnée que la plupart des utilisateurs vont avoir une ip dynamique...
Marsh Posté le 31-05-2003 à 14:01:33
SmilM a écrit : Voilà,pourrais je avoir votre avis sur cette technique ? |
T'as pas retenu une seule des choses que l'on t'a dit...
Marsh Posté le 31-05-2003 à 21:53:55
gizmo a écrit : |
Merde je croyais avoir répondu cette aprem!
Bon donc:
Je sais bien que les ip varie, que c'est foutu pour les proxy et les connection partagé, mais:
Je ne vais pas utiliser les sessions parce que il faudrait une interface utilisateur avec des comptes ect..
Et ca demande encore du boulot , et puis faudrait que je retape le design.(meme si ce n'est qu'un petit bloc a faire en plus)
Les cookies, je n'en vois pas trop l'utilité, et puis les dates encore moins
Marsh Posté le 31-05-2003 à 21:59:51
bah si tu nes vois pas l'utilité des seules choses efficaces pour ton problème, c'est pas la peine qu'on t'aide...
Marsh Posté le 31-05-2003 à 22:10:29
gizmo a écrit : bah si tu nes vois pas l'utilité des seules choses efficaces pour ton problème, c'est pas la peine qu'on t'aide... |
j'ai trouvé !
Je viens d'écrire sa sur mon tableau blanc :
Code :
|
Bon c'est trés résumé.
Marsh Posté le 31-05-2003 à 22:21:41
rhooo. mais si tu veux absolument n'utiliser que les ip, pourquoi tu rejettes l'idée de la date???
Marsh Posté le 31-05-2003 à 22:26:07
gizmo a écrit : rhooo. mais si tu veux absolument n'utiliser que les ip, pourquoi tu rejettes l'idée de la date??? |
Pourrais tu m'expliquer plus amplement l'idée des dates suprimés tout les 24heures, car je relis,je relis, mais je ne comprends toujours pas l'interet.
Code :
|
Marsh Posté le 31-05-2003 à 22:29:42
bon, retenir des ip, vu que c'est dynamique, à part faire chier ceux qui sont derrières un proxy (et encore!), ca ne sert pas à grand chose.
Donc, il faut éviter que qq'un qui n'a pas encore voté puisse le faire. La probabilité que qq'un ne se choppe une ip d'un autre qui a déjà voté augmente en fonction du temps (et du nombre de voteur), c'est pour ça qu'il faut purger régulièrement ta table d'ip.
De toute façon, cela n'empèchera jamais que celui qui tente de voter 2 fois avec la même connexion.
Marsh Posté le 31-05-2003 à 22:52:57
gizmo a écrit : bon, retenir des ip, vu que c'est dynamique, à part faire chier ceux qui sont derrières un proxy (et encore!), ca ne sert pas à grand chose. |
ha ok !
Je crois que j'ai compris
En fait, vu que l'ip est dynamique,gardé les ip ne sert pas a grand chose, et il n'y a pas de reel solution, donc une personne qui a déjà voter avec l'ip X pour recommencer le lendemain avec l'ip Y, c'est bien ca ?
Et donc puisque, l'ip X peut aller chez une autre personne, qui ira peut etre sur mon site,il faut mieux suprimer un ip qui a plus de 24 heures, enfin bon ,c'est un site a 3visiteurs par jour pour le moment,mais je fais ca pour apprendre PHP/MYSQL et puis bon, des trucs dans ce genre la qui sont bon a savoir.
Heu, c'est en SQL qu'on suprime les ip de plus de 24heures, il faut pas le faire manuellement(aller dans la BD et vérifier chaque jour les dates) comme meme ?
Peut etre avec un fichier PHP qui s'execute tout les jours en "background"(je sais plus le mot exacte) chez mon hebergeur, et dont les instructions sont (en bref):
If(l'enregistrment a plus de 24h)
{
DELETE
}
Ou un autre moyen ?
Marsh Posté le 31-05-2003 à 22:56:11
oui, tu fais ca en SQL. Tu en profite, à chaque fois que qq'un vote, tu vires les ip trop anciennes dans la même script.
Marsh Posté le 31-05-2003 à 23:09:08
Pourquoi les ips, pcq un type peut fausser un sondage en votant 200 fois.. Les ips empêchent ça. et ce n'est pas empêcher un certain nombre de personnes de voter qui changera la donne. Retenir qui a déjà voté dans des cookies est moins fiable car on peut ne pas accepter les cookies et donc voter autant de fois qu'on veut.
En virant les ips toutes les 24h ça permet à une personne de voter une fois par jour.. c'est pas la mort.
Marsh Posté le 31-05-2003 à 23:16:14
Belgique a écrit : Pourquoi les ips, pcq un type peut fausser un sondage en votant 200 fois.. Les ips empêchent ça. et ce n'est pas empêcher un certain nombre de personnes de voter qui changera la donne. Retenir qui a déjà voté dans des cookies est moins fiable car on peut ne pas accepter les cookies et donc voter autant de fois qu'on veut. |
Heu
oui
Donc je fais la meme chose sans les cookies..
ra mon clavier est passe en qwerty
Marsh Posté le 01-06-2003 à 00:02:06
Tout dépend de ce que tu veux faire.. Mais stocker dans un cookie les numéros de sondages auquels on a déjà participé ne me semble pas être une bonne solution.
Marsh Posté le 01-06-2003 à 19:34:22
Belgique a écrit : Tout dépend de ce que tu veux faire.. Mais stocker dans un cookie les numéros de sondages auquels on a déjà participé ne me semble pas être une bonne solution. |
ouai.
Donc j'ai teste ca :
Code :
|
Et il me renvoi ca, avec une erreur :
127.0.0.1
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\michael\site web\webzine\design final\note.php on line 42
requete INSERT INTO sondages (ip,idarticle) VALUES (127.0.0.1,8) impossible
Pourtant je ne vois pas le probleme...
ps: j'ai pas encore pris en comptes les dates pour l'instant.
Marsh Posté le 01-06-2003 à 19:40:25
salut SmilM
executes ta requête dans phpmyadmin pour tester
.... a mon avis il veut que tu proteges ton IP par des quotes
genre :
Code :
|
Marsh Posté le 01-06-2003 à 23:04:25
salut
Merci apparament ca marche.
Maintenant je m'occupe des dates ,et cette fois ci , je vais utiliser DATE en mysql au lieu de mon habituel VARCHAR, histoire d'apprendre comment ca marche.
Donc, je suis en local là.
Code :
|
Et bien apparament ca marche pas.
Je crois qu'il faut configurer quelque chose au niveau de la BD pour la date, la valeur par défaut.
Donc quand je fais un test, il écrit dans le champ date de ma BD:
2000-00-01
Bizarre..
donc si je change la valeur par default de 2000-00-01 en 00-00-2000 , toujours rien.
Je suis en train de galere un peu sur la doc pendant que je répond
http://www.mysql.com/doc/en/DATETIME.html
donc j'ai essayer en valeur par defaul
DD:MM:YYYY
Toujours rien.
Can you help me ?
ca ne donne toujours rien.
Marsh Posté le 01-06-2003 à 23:10:46
utilises la fonction mysql
$requete3="INSERT INTO sondages (ip,idarticle,date) VALUES ('$ip',$id, NOW())";
Marsh Posté le 02-06-2003 à 10:21:50
simogeo a écrit : utilises la fonction mysql |
Yep ca marche, j'ai fais ca hier mais j'ai oublié de répondre
Merci encore simogeo
Marsh Posté le 30-05-2003 à 10:42:51
salut!
J'ai fais un genre sondage pour noter un article de 1 à 5.
Mais j'ai bien sur plusieurs article, contenue chacun dans une base de donnés avec différentes ID
Alors j'aimerais savoir comment vous feriez de facon theorique pour empecher qu'une seul et meme personne (enfin, un seul et meme PC je pense plutot..) ne puisse voter qu'une seul fois par article
Parce que je ne vois pas trop ce que je pourrais ecrire dans mes cookies.
Enfin bon, pour l'instant je considere mes cookies comme un fichier texte simple qui s'écrit chez l'utilisateur.
Donc je vois peut etre une solution de ce type:
j'écris:
[IDarticle]:[Avoter ou non]
Donc par exemple :
Pour l'article id: 6 et chez quelqu'un qui a voté j'écris:
6:0
Meme chose pour quelqu'un qui a voté, j'écris:
6:1
Que pensez vous de cette technique ?
Merci d'avance.
edit:
Mon pere pense que je chop l'ip de l'utilsateur, que j'écris sa dans une table de ma bd MYSQL avec l'id de l'article correspondant a son vote. C'est une meilleurs technique ?
(je précise, je n'ai pas 10 000 visiteurs par jour sur mon site, donc ma table n'aura pas des milliers d' enregistrement
Message édité par smilm le 02-06-2003 à 12:16:14