JeuWeb - Crée ton jeu par navigateur
Afficher (Tester) , Traiter (comment eviter de tester 2 fois la meme chose ?) - 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 : Afficher (Tester) , Traiter (comment eviter de tester 2 fois la meme chose ?) (/showthread.php?tid=4599)



Afficher (Tester) , Traiter (comment eviter de tester 2 fois la meme chose ?) - php_addict - 19-02-2010

Bonsoir à tous (et à toutes ?)

je sollicite une fois de plus votre avis sur un probleme tres simple:

j'ai une page liste_batiment.php qui liste les batiments qu'il est possible de construire, la liste des batiments est affichée suite à différents tests (a t'on le droit ?, a t'on assez de sous sous ?, etc...)

sur cette page liste_batiment.php il y a un joli lien :

<a href="construire.php?id=2">construire</a>

la page construire.php construit le batiment choisi mais doit faire les meme tests que la page liste_batiment.php (à cause du passage de parametre dans l'url

existe t'il une astuce pour ne pas avoir à se retaper tout les tests.

c'est à dire, comment faire simple pour ne pas re-tester sur la page construire.php tout ce qui a été testé sur la page liste_batiment.php?

en vous remerciant tous de m'avoir lu une fois de plus Wink

excellente soirée à tous et HAPPY CODING !


RE: Afficher (Tester) , Traiter (comment eviter de tester 2 fois la meme chose ?) - pascal - 19-02-2010

non, on ne peut pas se passer de refaire les tests.

Un contre-exemple simple pour le montrer
- j'ouvre 2 pages avec la liste des bâtiments
- j'achète un bâtiment sur la page A, il ne reste plus d'argent
- j'achète un autre bâtiment sur la page B, sans tester l'argent, qu je n'ai plus : Bingo ! Deux pour le prix d'un !

Il faut retester, pas d'autre solution.

A+

Pascal


RE: Afficher (Tester) , Traiter (comment eviter de tester 2 fois la meme chose ?) - Sephi-Chan - 19-02-2010

Never trust user input!

Dans certains cas (pas le tiens), tu peux utiliser un sceau d'intégrité. Mais c'est chiant à faire, surtout si les champs de ton formulaire sont variables.

C'est ce que font les scripts bancaires pour les sites qui t'envoient sur le site de la banque pour payer. Comme les informations (prix à payer, etc.) sont transmises via des champs cachés, il y a un risque de falsifier ces informations. Pour éviter ça, ils font une concaténation de la valeur de tous ces champs cachés, puis accolent à cette chaîne une clé confidentielle (fourni au vendeur par la banque) et font un hash MD5 de la chaîne rendue.

Ensuite, le script de traitement de la banque effectue la même opération (avec les informations qu'il a reçu) puis compare le hash qu'il a reçu à celui qu'il vient de calculer. Si les hash correspondent : il n'y a pas eu de falsification.


Sephi-Chan


RE: Afficher (Tester) , Traiter (comment eviter de tester 2 fois la meme chose ?) - php_addict - 19-02-2010

merci pour vos reponses, c'est bien se que je redoutais Wink

quand tu parles de "sceau d'intégrité" c'est un peu comme un jeton (token) ?

bonne fin de soiree


RE: Afficher (Tester) , Traiter (comment eviter de tester 2 fois la meme chose ?) - QuentinC - 20-02-2010

Tu pourrais sauvegarder ce genre d'info dans la session. Mais bon, ça ne coûte pas grand chose de refaire ces tests normalement. ET puis c'est pas sûr que ce soit infaillible dans la session, j'ai quelques doutes...


RE: Afficher (Tester) , Traiter (comment eviter de tester 2 fois la meme chose ?) - Allwise - 20-02-2010

Tu peux factoriser tous tes tests dans une fonction CheckPossibleBuildings, qui te renvoie par exemple les identifiants des constructions possibles, et tu appelles cette fonction dans tes 2 fichiers. Comme ça tu te refrappes sans te refrapper tous tes checks.


RE: Afficher (Tester) , Traiter (comment eviter de tester 2 fois la meme chose ?) - Argorate - 20-02-2010

+1 Allwise, il suffit de faire une fonction, comme ça c'est moins chiant pour toi. Après coté temps d'execution, ça dépent de la complexité de ton systeme et si tu as bien fait ta fonction ^^

Mais comme dit, tu es obligé de verifier a cause des cheats/erreur de circonstance possible...
HS : Quand je pense a tout le temps que nous programmeur on perd a verifier des données qu'avec un peu d'honeteté de la part des utilisateurs, on aurait pas a coder... Sad


RE: Afficher (Tester) , Traiter (comment eviter de tester 2 fois la meme chose ?) - php_addict - 20-02-2010

merci pour vos reponses

ca y est j'ai fait ma fonction qui renvois un tableau...que j'utiliserais dans mes 2 fichiers, ca va grandement simplifier mon code Wink

encore merci

bon week end !