JeuWeb - Crée ton jeu par navigateur
MultiClick sur lien - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : MultiClick sur lien (/showthread.php?tid=3735)



MultiClick sur lien - KiCkErS - 26-02-2009

Bonjour a tous...

Je me presente KiCkErS, developpe actuellement un jeu en ligne php... Depuis le developpement de la premiere ligne de code, je passe ici pour avoir quelque soluce, et ca m'aide grandement Big Grin

Mais la je suis au point mort...

J'ai une page de gestion de combat, je vous passerai les details, mais dans cette page je fais tout ma gestion de combat des UPDATE dans ma table avec les divers information (xp gagnee, pv perdu, etc).

On lance un combat en cliquant sur un pseudo, (donc le pseudo est en lien) et en cliquant sur ce lien cela lance ma page de gestion de combat...

Voila mon probleme.. Les utilisateur lambda cliquerai qu'un fois sur ce lien et donc le serveur aura le temps de faire le traitement et ainsi d'afficher la page que je souhaite, cependant quand on s'excite sur ca souris, et qu'on clic de nombreuse fois il passe autant de fois dans ma page de gestion de combat avant d'afficher la page que je souhaite, et ainsi realise le traitement autant de fois que l'utilisateur a cliquer alors que cela ne dois ce faire qu'une fois par lien..
Alors voila ma question, comme reussir a faire un traitement qu'une seul fois pour un lien meme si l'utilisateur s'excite sur la souris ?

J'espere que j'ai etait clair^^

Merci d'avance,
Cordialement
KiCkErS


RE: MultiClick sur lien - wild-D - 26-02-2009

coté client:
tu peux faire mumuse avec javascript pour éviter les multiclics

coté serveur:
tu refile une var temporaire aléatoire dans le lien en question (que tu stock dans la session de ton joueur)

quand la requête du joueur arrive pour un combat tu vérif que la var temp qu'il t'envoie correspond à celle en session et ensuite tu la vire/ou la remet à zéro.
(comme ça les prochaine requête le teste échoueras et donc t'enverras juste un message "vilan pas bob toi cliquouiller tout plein faut pas !!!") sans faire tout tes udates, etc...

p.s.
coté serveur indispensable, le coté client c'est en option.


RE: MultiClick sur lien - KiCkErS - 27-02-2009

Merci de ta réponse Wink

Mais je venais ce matin pour dire que j'ai resolu mon probleme autrementWink

J'avais deja essayer le javascript coté client, mais cela ne marcher pas :'(

donc ma solution, si ca peut aider quelqu'un : Je suis juste passer par une page intermediare avec un header.. donc comme ca il a beau clicker 12 mille fois, il passera qu'une fois dans le header^^ voila .. un peu bourrin mais efficace Wink


RE: MultiClick sur lien - wild-D - 27-02-2009

^^ une redirection ça résout le problème du multiclic; mais ça ne résout que partiellement le fond du problème non ?
un joueur "malin" qui fait un tas de reload... (ben quoi y a pas que les multiclics sur les liens pour charger un page à gogo, la touche F5 c'est aussi rigolo Tongue)


RE: MultiClick sur lien - Ter Rowan - 27-02-2009

doit bien y avoir moyen, en tant que tricheur, de lancer en automatique la page et de passer outre cette protection

je pense vraiment que tu devrais suivre le conseil de wild-d, réalise une protection côté serveur, là tu te protèges juste d'une fausse manip, pas d'une mauvaise intention


RE: MultiClick sur lien - Anthor - 27-02-2009

Code PHP :
<?php 
if( isset($_SESSION['antispam']) && ($_SESSION['antispam'] + 360) < time() )
die(
'AntiSpam');

// Ouverture du combat
$_SESSION['antispam'] = time();

Dur dur la logique algorithmique parfois...


RE: MultiClick sur lien - KiCkErS - 02-03-2009

Oui c'est vrai le probleme et repousser... mais le F5 pour l'instant ne pose pas de probleme vu que c'est juste une page de lien ... mais c'est vrai que maintenant que vous le precisez, j'ai une page qui foire quand on fait F5... mais je me suis dit que je pourai gerer ca autrement!...
Je prefere travailler sur autre chose que ce probleme j'y reviendrai plus tard ^^

Mais merci a vous Wink