Javascript variabel opslaan
Met Game Maker Studio:HTML5 maak ik een game, dat vervolgens word omgezet naar JavaScript voor in het canvas element (HTML5 dus). In die game zijn punten te behalen, en die moeten dus ook worden opgeslagen in een database.
Maar hoe sla je nou veilig een javascript variabel op in een database, omdat deze variabel te beïnvloeden is vanuit de broncode..
Dus hoe kan ik dit het best aanpakken?
Alvast bedankt!
www.mijngame.nl je spel spelen of draai je het spel vanaf je harde schijf in je browser?
Als je het vanaf je eigen systeem draait is het betrekkelijk simpel,
Javascript is client-side code die niet kan communiceren met een server-side database zonder hulp.
Gebruik een tussenstap zoals AJAX, er zijn hier hier en hier hier W3 tutorials over de basics van JS & PHP door elkaar (client 2 server-side en terug).
Hiermee kun je vrij eenvoudig je variabele in de database stoppen, oproepen is een ander verhaal. Dat hangt ook van GameMaker af.
Wat is de intentie voor de database? moet deze scores van gebruikers opslaan die op jouw Als je het vanaf je eigen systeem draait is het betrekkelijk simpel,
Javascript is client-side code die niet kan communiceren met een server-side database zonder hulp.
Gebruik een tussenstap zoals AJAX, er zijn hier hier en hier hier W3 tutorials over de basics van JS & PHP door elkaar (client 2 server-side en terug).
Hiermee kun je vrij eenvoudig je variabele in de database stoppen, oproepen is een ander verhaal. Dat hangt ook van GameMaker af.
Gewijzigd op 02/08/2012 04:37:15 door R v B
Dit is naar mijn idee niet veilig te doen, ik denk dat het altijd aanpasbaar blijft
Dus niet in de pagina zelf het aantal punten benoemen, maar ergens in een lang/groot JS-bestand.
't Blijft altijd mogelijk in dit geval, maar 't blijft dan ook maar een spelletje.
Je zou je punten-aantal ook kunnen encrypten en later kunnen decryten. Wel met een salt natuurlijk.
Misschien vinden we inspiratie als we dit weten.
1 ding staat vast. Je kunt niet verhinderen dat de gebruiker dingen aanpast op client-niveau.
Vooral dan op het moment dat de punten worden opgestuurd naar de server.
Heel simpel: de gebruiker zoekt naar de Ajax requests, zet daar een breakpoint. Op het moment dat de punten moeten worden opgestuurd, houdt Firebug of Developer tools alles tegen; dan kan de gebruiker alle gegevens aanpassen en terug op run klikken.
Je zal creatief moeten zijn.
Bekijk het probleem zoals je inloggen bekijkt; misschien kan je daar inspiratie vinden.
Het punt daar is: de oplossing mag niet naar de client gestuurd worden.
bv. stel dat je ergens op een specifieke plek moet klikken (spel genre "Find Waldo").
- Je kan de coördinaten in de javascript zetten en dan met javascript testen of die waarde overeen komt met de coördinaten van de muisklik.
- Of ... je sturt de coördinaten sowieso door naar de server en op server-niveau controleer je of die coördinaten kloppen.
In het eerste geval kan de gebruiker vals spelen, in het tweede geval is dit veel moeilijker.
Zelf zat ik nog te denken om de gebruikersnaam + aantal munten te hashen, en dat dan mee te sturen via AJAX naar de PHP pagina samen met het aantal munten, dan in PHP weer gebruikersnaam + aantal munten hashen, en die vergelijken met de meegestuurde hash.
Het probleem is alleen dat die hash dus ook in javascipt moet worden gemaakt, en dat is dus weer aan te passen. En ik zie zo gauw geen mogelijkheid om de gebruikersnaam + munten te hashen in PHP..
Hash != terug te rekenen
Crypt == terug te rekenen.
Aan de andere kant: als jij het gewoon goed "verstopt" zal niemand de moeite te nemen om al die JS-bestanden te gaan bekijken en aan te passen.
Nou, ik maak dit dus met Game Maker Studio:HTML5, en je kunt daar javascript bestanden bij toevoegen. Dus de game, en de bestanden die ik toevoeg, worden in apparte files opgeslagen.. dus de AJAX requests zitten in een apart bestand..
*Bump*