Avatar billede flodhesten Nybegynder
26. august 2007 - 22:04 Der er 26 kommentarer og
2 løsninger

Gemme et tal fra javascript kode til asp session

Hej eksperter...

Jeg har denne kode:

function stopgame() {
stoptimer();
playing=false;
document.cpanel.timeleft.value=0;
clrholes();
display("Spillet er slut");
alert('Spillet er slut.\nDin score er: '+totalhits);
}

Er det muligt at få "totalhits" ned i denne ASP session:
session("totalhits")?

På forhånd tak.
Avatar billede trumf Nybegynder
26. august 2007 - 22:24 #1
Jep

function stopgame() {
stoptimer();
playing=false;
document.cpanel.timeleft.value=0;
clrholes();
display("Spillet er slut");
alert('Spillet er slut.\nDin score er: '+<%=totalhits%>);
}
Avatar billede flodhesten Nybegynder
26. august 2007 - 22:28 #2
Det var vist ikke helt det jeg mente..

Altså... "totalhits" er et bestemt tal... Det tal skal jeg have gemt i en session... Det tror jeg ikke rigtig på at din kode gør...
Avatar billede trumf Nybegynder
26. august 2007 - 22:31 #3
nu jeg læser det en gang til, så er det nok den anden vej du vil!

Umiddelbart ville jeg løse det ved at lave en knap til brugeren "klik her for at gemme din score" som sender en videre med variablen som parameter.

<a href="saveScore()">klik her for at gemme din score</a>

og så en funktion til det:

function saveScore() {
  document.location.href="nextpage.asp?totalhits="+totalhits;
}

Så kan du fange score og lægge det i session("totalhits") på nextpage.asp
Avatar billede truelz Nybegynder
26. august 2007 - 22:32 #4
Det bedste jeg kan komme i tanke om, er at post/get siden og sende din totalhits-variabel med som form-data.
Avatar billede flodhesten Nybegynder
26. august 2007 - 22:33 #5
Det lyder som en fornuftig løsning.

Men kan man så ikke snyde ved at stjæle koden ned til ens egen computer, lave mit lille spil nemmere og sende en meget større score til den samme side?

Skulle jo helt ikke kunne lade sig gøre, hvis du forstår hvad jeg mener...
Avatar billede truelz Nybegynder
26. august 2007 - 22:34 #6
Okay, trumf kom først. Men jeg kan lige tilføje at du jo har mulighed for at få dit javascript til at poste siden (eller evt. en skjult side i en iframe e.lign.) for at sende resultatet til serveren med det samme.
Avatar billede flodhesten Nybegynder
26. august 2007 - 22:34 #7
Hvordan truelz, kan du ikke prøve at uddybe lidt?

Jeg er ultra noob til javascript, så vil det være svært at lave?
Avatar billede trumf Nybegynder
26. august 2007 - 22:34 #8
Man kan lave noget med at åbne vinduer, men da mange har popup stoppere, så er det ikke en helt god ide. Ellers skal du overveje AJAX, eller HttpResponse, som er noget ala det samme, og som virker i classic ASP. Dog ikke i lidt ældre Opera browsere...
Avatar billede truelz Nybegynder
26. august 2007 - 22:35 #9
Du vil altid kunne snyde, da du har sendt hele scriptet til klienten, og derved giver ham mulighed for at ændre i koden og afvikle det. Du bør dog kunne lave et tjek på nogle servervariables for at se hvilken side han kommer fra, men den kan nok også omgåes.
Avatar billede flodhesten Nybegynder
26. august 2007 - 22:38 #10
Men hvis man kunne smide det i en session, ville man jo ikke have muligheden for at snyde?
Avatar billede trumf Nybegynder
26. august 2007 - 22:39 #11
truelz har ret, det er nok pænest med en iframe.

function saveScore() {
  frames['iFrameName'].location.href="savepage.asp?totalhits="+totalhits;
}
Avatar billede truelz Nybegynder
26. august 2007 - 22:41 #12
Det med at poste formen er såmænd meget simpelt
Lav en standard form:
<form name="minform" action="gemresultat.asp" action="post">
<input type="hidden" name="resultat" value="">
</form

Og sidst i dit javascript skriver du så:

document.minform.submit();

Alternativt, hvis du placerer formen i et andet vindue:
window.formframe.document.minform.submit();

Jeg er ikke sikker på min javascript, det er heller ikke min superstærke side.
Men den har sådan set samme sårbarhed som trumf's idé.
Avatar billede trumf Nybegynder
26. august 2007 - 22:42 #13
Du kan gøre det meget svært at snyde hvis du feks sender en variable mere med over, som du krypterer, og bliver verificeret på asp siden i iFramen, men det må være en del af dit næste spm :)
Avatar billede flodhesten Nybegynder
26. august 2007 - 22:48 #14
Hvis jeg nu prøver med denne:

<form name="minform" action="gemresultat.asp" action="post">
<input type="hidden" name="resultat" value="">
</form

Hvis man nu skal have mulighed for at skrive sit navn, hvordan kan det så gøres?
Avatar billede truelz Nybegynder
26. august 2007 - 22:57 #15
Jeg har da sovet i timen. Vi skal jo putte noget i resultat-feltet, inden vi submitter formen.
I samme form kan du lave en <input type="text" name="navn">, hvor brugeren så kan indtaste sit navn. Men det skal så gøres inden du poster formen, så jeg vil nok sende resultatet og navnet til serveren af to gange, og så skrive noget asp der sørger for at kæde det sammen.

For at bruge javascript til at skrive til et element i en form, gør du noget lignende:
document.minform.resultat.value = totalhits;

Jeg lurede også på noget kryptering af resultatet, men jeg kan ikke lige komme i tanke om en måde, så den ikke umiddelbart kan brydes.
Avatar billede trumf Nybegynder
26. august 2007 - 23:05 #16
Hvis du laver et tidsstempel krypterer det og sender det med over. Fanger det der står og sammenligner det med samme tidsstempel på den anden side, som selvfølgelig også krypteres, så skal man altså være god til at gætte for at snyde.
Det er i øvrigt også den slags man gør når man skal have sikre login procedurer.
Læs evt mere om SHA1 eller MD5, som er måderne at gøre det på.
Avatar billede flodhesten Nybegynder
26. august 2007 - 23:07 #17
Tror jeg desværre ikke jeg har tid til at kaste mig ud i, men jeg har da fået lidt inspiration. Jeg ved ikke rigtig hvem der skal have point her. I kan eventuelt dele?
Avatar billede truelz Nybegynder
26. august 2007 - 23:20 #18
Det vil give dig problemer hvis tiden ikke er stillet ens på klienten og serveren. Og en person der vil snyde, kan så vidt jeg kan regne ud, og nemt omskrive et sådan script så han kan sende et falsk tidsstempel med.
Nu får du et svar, men jeg synes du skal tage dem selv, da vi ikke løste dit problem.
Avatar billede trumf Nybegynder
26. august 2007 - 23:26 #19
Problemet kan løses med både mit javascript og truelz's form.

mht krypteringen, så er det et tidsstempel fra serveren fra siden der sender og den der modtager. Det vil virke da der kun er et splitsekund fra den sender til den modtager...

Hvis det skal brydes skal brugeren gætte serverens tid og klikke i samme splitsekund som tiden i det tidsstempel denne selv prøver at lave, vel at mærke på det tidspunkt som brugeren gætter serverens tid er.
Avatar billede trumf Nybegynder
26. august 2007 - 23:28 #20
Du kan så også indsætte din mors pigenavn og din hamsters øjenfarve sammen med tiden. Så skal brugeren virkelig kunne gætte ;-)
Avatar billede truelz Nybegynder
26. august 2007 - 23:53 #21
Den holder ikke, den der. Jeg så i en anden post hvor du bruger et tidsstempel til at frasortere bots der poster i en gæstebog, og det er en kanon idé.
Men den holder ikke her, for brugeren kan jo bare lave scriptet om, så den istedet for at sende resultatet fra spillet, sender en konstant med en kanon score. Så vil det jo stadig være det samme tidsstempel.
Avatar billede olebole Juniormester
27. august 2007 - 03:24 #22
<ole>

flodhesten >> Det er ved Gud ikke videre begavet at skrive det link, du bruger i dit eksempel! De, der tidligere har gjort det, har fået deaktiveret deres bruger.

Hvad i alverden får folk dog ud af den slags papnakkede, infantile indfald ...?!??!!!

/mvh
</bole>
Avatar billede snowball Novice
27. august 2007 - 18:06 #23
Indlæg fra flodhesten 26/08-2007 22:43:24 og 22:44:37 er blevet fjernet grundet det link de pågældende indlæg indeholdte.

flodhesten: Undlad venligst at linke til den slags igen, tak.

Snowball / Admin
Avatar billede flodhesten Nybegynder
27. august 2007 - 18:45 #24
My bad, sorry... Det var egentlig bare for at illustrere, at folk det prøvede at snyde var nogle slemme nogle, og så blev jeg den onde :(
Avatar billede olebole Juniormester
27. august 2007 - 19:55 #25
Intet renser luften som en velment undskyldning. Vi starter på en frisk i næste tråd  ;o)
Avatar billede trumf Nybegynder
27. august 2007 - 23:02 #26
truelz>

Men det med gæstebogen har jo ikke noget med kryptering at gøre, det er kun et spørgsmål om tid. I dette tilfælde er tidsstemplet kun en "nøgle" i krypteringen. Du kan bruge hvad som helst, bare det er noget der ændrer sig og som udregnes i samme øjeblik du klikker på "send", derved bruger du serverens tid fra du klikker send til den næste side modtages. Hvis du kun tager timer, minutter og sekunder med, har du en buffer på et sekund, men det er lige det som en evt. "snyder" skal gætte, som er serverens tid.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester