Bonjour à tous.
Je vais vous expliquer mon problème
Tous d'abord sur mon site ( qui est un site de jeu en ligne ) j'ai intégrer deux boutons ( root-top ) qui permette de faire un vote sur un autre site. ( le but est qu'il y à un classement réaliser par le site en question et donc c'est une sorte de pub gratuite )
Voici le code que j'ai créer pour effectuer les votes :
Ici il tous fonctionne ( enfin ça marche mais peut être qu'il peut y avoir des amélioration )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 //Partie vote // rt A = root-top mmorpg // rt B = root_top ogame //pour le root-top mmorpg $dernier_vote_mmorpg = $user['bonus_temps_mmorpg']; $temps = time(); $Temps_entre_deux_rt_A = $temps - $dernier_vote_mmorpg; $points_bonus = $user['points_bonus']; //pour le roo-top ogame $dernier_vote_ogame = $user['bonus_temps_ogame']; $temps = time(); $Temps_entre_deux_rt_B = $temps - $dernier_vote_ogame; $points_bonus = $user['points_bonus']; //pour les officier ( points ) $points_officier = $user['rpg_points']; //vote du root_top mmorpg if ($Temps_entre_deux_rt_A >=7200){ $mmorpg_A = "<table width=650><tr><th align=center width=325> <img src=http://img.root-top.com/topsite/mmorpg/banner.gif border=0><br /> <a href=rt_mmorpg.php onclick=window.open('frames.php');>Voter<a/></th>"; $parse['mmorpg'] = $mmorpg_A; if ($Temps_entre_deux_rt_B <=60) { $mmorpg_C = "<table width=650><tr><th align=center width=325><img src=http://img.root-top.com/topsite/mmorpg/banner.gif border=0><br />Veuillez attendre 60 seconde entre chaque vote !</th>"; $parse['mmorpg'] = $mmorpg_C; } } else { $mmorpg_B = "<table width=650><tr><th align=center width=325><img src=http://img.root-top.com/topsite/mmorpg/banner.gif border=0><br />Vous avez déjà voté !</th>"; $parse['mmorpg'] = $mmorpg_B; } //vote du root_top ogame if ($Temps_entre_deux_rt_B >=7200){ $ogame_A = "<th align=center width=325> <img src=http://img.root-top.com/topsite/ogame0serveurs/banner.gif border=0><br /> <a href=rt_ogame.php onclick=window.open('frames.php');>Votez <a/></th></tr></table>"; $parse['ogame'] = $ogame_A; if ($Temps_entre_deux_rt_A<=60) { $ogame_C = "<th align=center width=325><img src=http://img.root-top.com/topsite/ogame0serveurs/banner.gif border=0><br />Veuillez attendre 60 seconde entre chaque vote !</th></tr></table>"; $parse['ogame'] = $ogame_C; } } else { $ogame_B = "<th align=center width=325><img src=http://img.root-top.com/topsite/ogame0serveurs/banner.gif border=0><br />Vous avez déjà voté !</th></tr></table>"; $parse['ogame'] = $ogame_B; }
Ce script s'oriente sur les fichiers rt_mmorpg et rt_ogame
Voici le script : ( ils sont identique )
Quand un joueur vote il reçoit 10 points-bonus ( ce qui permet de les convertir en ressource ou autre enfin c'est pour le jeu )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 <?php define('INSIDE' , true); define('INSTALL' , false); $ugamela_root_path = './'; include($ugamela_root_path . 'extension.inc'); include($ugamela_root_path . 'common.' . $phpEx); //pour les root-tops on ajoute 10 points bonus ! $temps = time(); $id = $user['id']; if(isset( $user['id'])) { $id = $user['id']; doquery("UPDATE {{table}} SET bonus_temps_mmorpg=".$temps.", points_bonus=points_bonus+10 WHERE id=".$id."",'users'); } ?> <script language="javascript" type="text/javascript"> <!-- window.location.replace("http://www.root-top.com/topsite/mmorpg/in.php?ID=1360"); --> </script>
Le gros problème est qu'un joueur fouineur peut tricher facilement avec c'est codes, car si on ouvre deux fenêtres ou les boutons de votes sont présents ba on peut ni plus ni moin faire deux clics ( voir plus celon le nombre d'onglet ouvert ) sur le même bouton et donc aquérir 20 points au lieu de 10 maximun !!!
Comment je peut sécuriser cela et ainsi réparer ce "bug" ( qui n'est pas vraiment un bug )
Edit : j'ai fortement oublier de vous précisez que le clic de la mollette permet aussi de tricher !
Car effectivement si on clic avec avec cette technique, le vote est obligatoirement validé est donc on obtient autant de points que l'on souhaite.
J'espére que je suis assez explicite et que vous allez pouvoir me venir en aide.
Dans tous les cas je vous dit merci par avance.







Répondre avec citation



Partager