JeuWeb - Crée ton jeu par navigateur
Ajouter un point de compétence (exemple simpliste, juste pour comprendre) - 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 : Ajouter un point de compétence (exemple simpliste, juste pour comprendre) (/showthread.php?tid=4530)



Ajouter un point de compétence (exemple simpliste, juste pour comprendre) - R-transat - 13-01-2010

Bonsoir,

Je suis en train de faire un code (le strict minimum pour comprendre d'avantage le fonctionnement d'ajout de point de compétences).

Donc j'ai ceci :
Code PHP :
<?php
mysql_connect
('localhost', 'root', '');
mysql_select_db('test');

$sql = "SELECT * FROM competence";
$requete = mysql_query($sql);

$donnees = mysql_fetch_array($requete);

$max = $donnees['max_point'];

echo
'Personnage :<br /> Santé : '.$donnees['force']. '/' .$max. ' +<br />Force : ' .$donnees['sante'] . '/' .$max. ' +<br />Vous disposez de ' .$donnees['total_point']. ' points';
?>

Ma table :
force------sante------total_point-----max_point
4----------3----------10-------------20

Ce que je voudrais faire c'est par exemple lorsque l'on clic sur le + ajouter le point de santé ou de force. Faut il utiliser le méthode GET (j'ai peur au niveau de la sécurité comment cela se passe, si la personne ajoute l'url à chaque fois et qu'il ajoute des points comme ça, ou alors une condition dans la confition if du GET qui ferait une comparaison de nombre)

Ou sinon solution javascript, mais je ne maitrise pas du tout.

Je vous écoute pour mieux comprendre le fonctionnement de ceci Wink

Merci d'avance.


RE: Ajouter un point de compétence (exemple simpliste, juste pour comprendre) - php_addict - 13-01-2010

pas tres clair ton truc...

de totues facon des que tu passe un parametre en GET ou en POST il faut le verifier avant traitement car que se soit les POST ou les GET il sont modifiable tres facilement...(documentes toi sur les envois de requetes http...)

et le javascript je vois pas bien ce que tu peut faire avec !

php/SQL --> executé coté serveur
javascript -->executé coté client (sur ton ordi quoi...)


RE: Ajouter un point de compétence (exemple simpliste, juste pour comprendre) - R-transat - 13-01-2010

En disant javascript je pensais pour le coupler avec PHP Wink Eviter un refresh de la page par exemple, donc AJAX pour le traitement des données.

En gros ce que je vais c'est quand je clic sur le lien + (voir script plus haut) on ajoute un point de compétence sur les 10 disponibles (voir table) donc la force sera incrémenté de 1 et les points restant passera à 9, donc UPDATE mais c'est comment traiter le fait de cliquer sur le + en étant sécuriser pour ne pas faire F5 pour augmenter toujours de 1 ?


RE: Ajouter un point de compétence (exemple simpliste, juste pour comprendre) - Ekilio - 13-01-2010

Pourquoi ne pas séparer ?

D'abord, le joueur choisi l'endroit où il réparti ses points de compétences. Donc, il fait ses +, et javascript change uniquement l'affichage, histoire de faire joli.

Ensuite, lorsqu'il a choisi, il valide. Là, tu reçois les différentes valeurs qu'il veux changer (il suffit de placer des input type=hidden pour les transférer proprement et facilement), tu additionnes, et si c'est inférieur à 10, bingo, tu effectues le changement.

D'une part, coté joueur c'est rapide (pas de rafraichissement de page), d'autre part c'est facile à sécuriser (même si ce n'est pas 10, comparer deux nombres c'est simple :p ), et enfin ça permet de ne faire qu'une seule requête SQL, et donc d'optimiser le tout.


RE: Ajouter un point de compétence (exemple simpliste, juste pour comprendre) - My Hotel - 13-01-2010

Y'a un truc que je ne comprends pas : ta page est censée être utilisée quand? 1 fois l'inscription, à chaque lvl up? Détaille un peu. Il suffit de cliquer sur +, si oui, combien de fois maximum sont autorisées...
Par exemple, si tu le fais une fois à la création de perso, au début toutes les compétences sont à 0. Ton script vérifie que les compétences sont à zéro, et fait l'update, sinon c'est que le perso a déja été créé. Mais si tu veux le faire dans d'autres circonstances c'est différent.

Précise Wink

Bye

P.S : Sinon, effectivement, POST et GET c'est pas différent au niveau de la sécurité (cherche Tamper Data Smile ), par contre POST donne des URL plus jolies que GET, surtout quand il y'a beaucoup de paramètres.


RE: Ajouter un point de compétence (exemple simpliste, juste pour comprendre) - Anthor - 13-01-2010

Avant de vouloir passer par Ajax, il faudrait déjà comprendre la base je pense.
Pour éviter que ça dépasse, tu conditionnes juste entre la valeur minimale et la valeur maximale possible.


RE: Ajouter un point de compétence (exemple simpliste, juste pour comprendre) - R-transat - 13-01-2010

On gagne les point lorsque l'on accomplie des quêtes mais là j'ai vraiment grossi le truc pour l'exemple Wink


RE: Ajouter un point de compétence (exemple simpliste, juste pour comprendre) - Anthor - 13-01-2010

Et alors ? Smile Ça ne change strictement rien à la manière de faire.


RE: Ajouter un point de compétence (exemple simpliste, juste pour comprendre) - R-transat - 13-01-2010

Oui je sais ^^ mais c'est au niveau de la sécurité Wink. Je vais essayer avec la méthode POST avec un champ caché. Et pour la javascript je verrai plus tard.

PS : Je me suis inscris sur ton jeu (plutôt votre jeu, vous êtes deux il me semble) et j'aime assez le principe, ça ressemble à battle-pingouin en moins complet mais en plus jolie Wink


RE: Ajouter un point de compétence (exemple simpliste, juste pour comprendre) - Zamentur - 13-01-2010

Ben tu peux déjà le faire avec la méthode GET et un système de clé unique donné à chaque démarrage de session (en évitant d'utiliser celle de la session).

Ce sera déjà bien. Après il faut effectivement vérifier les entrées.

Tu peux aussi utiliser un formulaire pour faire une méthode POST de façon à ne pas mettre par exemple id dans ton lien pour l'action d'attaque.

Enfin, fait attention au problème du refresh; sépare bien l'action de l'affichage en utilisant la fonction header()