JeuWeb - Crée ton jeu par navigateur
"desactiver" un lien lorsque l'on a cliqué - 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 : "desactiver" un lien lorsque l'on a cliqué (/showthread.php?tid=870)

Pages : 1 2 3


RE: "desactiver" un lien lorsque l'on a cliqué - Maks - 20-04-2007

Ecoute, dans ton premier message je vois déjà :

Citation :Dans mon jeu, on peut cliquer 50 fois dessuite sur le lien attaquer, sans attendre que la page se recharge

C'est qu'il y a bien un problème niveau programmation, car lorsqu'on clique sur un lien, un bouton, la page se recharge et on exécute qqchose côté serveur dont des vérifications sur l'authenticité de l'action si je puis dire (si ça provient bien de la page et que c'est pas un truc trafiqué). Alors lâche qqes bouts de code peut être Wink


RE: "desactiver" un lien lorsque l'on a cliqué - Kassak - 20-04-2007

Je ne sais meme aps ce que je veux faire, ni ce que vous voulez que je fasse^^

Ma methode d'attaque et la suivante, il y a un formulaire en POST, lorsque l'on clique on est envoyé sur la page attaque.php qui traite l'action, et qui nous renvoie sur la page carte.php, vous voulez quoi comme bout de code? moi je vous en lache sans souci, mais je ne sais aps ce que vous voulezWink


RE: "desactiver" un lien lorsque l'on a cliqué - Maks - 20-04-2007

Alors comment peux-tu affirmer que "Dans mon jeu, on peut cliquer 50 fois dessuite sur le lien attaquer, sans attendre que la page se recharge" sans avoir même essayé...


RE: "desactiver" un lien lorsque l'on a cliqué - Kassak - 20-04-2007

Maks, j'ai essayé Wink


RE: "desactiver" un lien lorsque l'on a cliqué - Maks - 20-04-2007

Excuse j'ai un peu de mal à visualiser.

(exemple sous doctype xhtml 1.0 strict et avec $pseudo variable de session ou cookie, faire les vérifications nécessaire bien entendu sur l'orgine de la variable)

Code PHP :
<?php

// requete de selection d'infos sur les joueurs ect...

if ($_POST['action'] == "attaquer")

{

$reqSelectInfos = mysql_query("SELECT pa FROM joueurs WHERE pseudo = '$pseudo'");
$pa = mysql_result($reqSelectInfos,0,"pa")-3; // un coup = 3 pa

mysql_query("UPDATE joueurs SET pa = '$pa' WHERE pseudo = '$pseudo'");

// autres actions pour enlever des pv par ex ect.

}

else

{

// autres actions...

}

echo
"<form name='' method='post' action='combat.php'>
<div>
<input type='hidden' name='action' value='attaquer'>
<input type='submit' value='Attaquer' />
</div>
</form>"
;

?>

En essayant ça (en adaptant bien sûr), je vois pas où ça pose de problème. Si tu appuie plusieurs fois sur attaquer ça devrait s'exécuter qu'un seule fois.


RE: "desactiver" un lien lorsque l'on a cliqué - Haiken - 20-04-2007

Non, si tu appuies plusieurs fois (ou si tu le simules avec un programme), le script va s'exécuter plusieurs fois.
Dans la majorité des cas (cad si l'on n'utilise pas de gestionnaire de session personnalisé), les executions vont être sérialisées, car php pose un verrou sur le fichier de session (voir doc)
Cela n'empêche pas par contre un joueur d'ouvrir plusieurs sessions...

Il y a 3 solutions
- empêcher un joueur d'ouvrir plusieurs sessions (solution pas propre car repose sur le comportement implicite du gestionnaire de session de php)
- utiliser les transactions (innodb) (solution idéale)
- simuler des transactions en posant des verrous (avec get_lock par exemple ; solution moyenne mais rapide à mettre en oeuvre)


RE: "desactiver" un lien lorsque l'on a cliqué - blackneo - 20-04-2007

Peut etre que vous cherchez à faire trop compliquer!!!
Il y a des moyens simples pour empeché sa


RE: "desactiver" un lien lorsque l'on a cliqué - Haiken - 20-04-2007

on les attends !


RE: "desactiver" un lien lorsque l'on a cliqué - blackneo - 20-04-2007

Pas besoin de chercher du coté du javascript.
Il faut faire un script de statut. sa evite les questions de comment desactiver .... en tout cas c'est ce que je ferai.
un champ par default "null" et quand on click sur le lien on envoi une requete et sa devient en combat(ou autre).
Voila qui devrait repondre a la question.
Comment desactiver un lien apres avoir cliquer dessus.


RE: "desactiver" un lien lorsque l'on a cliqué - Haiken - 20-04-2007

Citation :on peut cliquer 50 fois dessuite sur le lien attaquer, sans attendre que la page se recharge
le "sans attendre que la page se recharge" exclut le fait de positionner un flag dans la base de données, puisque qu'on n'attend pas la réponse du serveur. Et d'ailleurs, c'est probablement la pire solution qui soit, puisqu'elle n'empêche rien du tout.