Avatar billede axkris Nybegynder
23. august 2005 - 14:34 Der er 16 kommentarer og
1 løsning

Betalings-system - må ikke bruge back-knappen

Hej alle

Jeg roder med en dankort-løsning, hvor folk ikke må kunne bruge back-knappen, fordi så kan de måske snyde systemet, hvis de er smarte. Jeg har åbnet betalings-siden i en popup, så back-knappen i det mindste ikke vises, men man kan jo stadig bruge ALT + pil til venstre for at komme tilbage. Den kan ikke koble fra, ved det godt, men så må det i hvert fald være sådan, at man ikke kan komme tilbage til den forrige side.

Jeg har prøvet lidt med:

<%@ Language=VBScript %>
<%Option Explicit
  Response.Expires=0
%>

Men der kan jeg stadig komme tilbage til den forrige sige.

Jeg har prøvet Roenvings forslag:
if(location.href.indexOf(document.referrer)==-1)location.href=location.href+"?"
samt location.replace(window.location.href)

Men problemet er så, hvis folk er så snue, at de går ind og kobler js fra i deres browser, så køres js-koden ikke.

Så hvor gør man? Hvordan gør netbankerne, når de ikke vil have folk til at gå tilbage til den forrige side?
Avatar billede axkris Nybegynder
23. august 2005 - 14:35 #1
Tilføjelse: Noget helt andet er, at document.referrer vist ikke virker, hvis man anvender Norton Firewall.
Avatar billede roenving Novice
23. august 2005 - 15:05 #2
Måske kan du bruge det samme trick, som eksperten bruger:

Ved en submit af et indlæg sendes det til en respons.php-ting, som udfører det normale database osv.-arbejde, hvorefter location replaces, og altså overskriver det tidligere entry !-)

Desuden medsendes til enhver form et unikt id, som kun kan submittes een gang !o]
Avatar billede axkris Nybegynder
23. august 2005 - 15:47 #3
Smider du ikke et hurtigt eksempel?
Avatar billede axkris Nybegynder
23. august 2005 - 15:54 #4
Men igen, hvis folk kobler js fra, så hjælper det jo ikke så meget. Findes der ikke en bedre asp-løsning?
Avatar billede roenving Novice
23. august 2005 - 15:56 #5
Ideen i Ekspertens løsning er jo netop, at al kode udføres på serveren, du kan uden problemer lave det samme i asp, som her er lavet i php !-)

-- jeg behersker bare ikke nogen af teknologierne ...
Avatar billede axkris Nybegynder
23. august 2005 - 15:59 #6
Ok, takker for forslaget :)

Er der nogle asp'ere i blandt os ?-)
Avatar billede olebole Juniormester
23. august 2005 - 16:41 #7
<ole>

Du sætter bare en HTTP-location header. I PHP vil det se sådan ud (jeg husker ikke lige syntaksen en i VB, men det gennemskuer du sikkert på sekunder):

<?
// Her gør du, hvad der skal gøres med DB o.lign

Header("Location: " din_side_med_formen.php);
?>

Response.Redirect - tror jeg faktisk, den hedder på 'VBsk'  :)

Hvis du submitter formen mod et sådan dokument, vil brugeren blive redirected tilbage til formen - og kan trykke 'Back' eller 'F5' så tosset, han vil.

/mvh
</bole>
Avatar billede olebole Juniormester
23. august 2005 - 16:42 #8
- baaahhhh ... sådan, selvfølgelig:

    Header("Location: din_side_med_formen.php");
Avatar billede nielle Nybegynder
23. august 2005 - 16:56 #9
Og i ASP:

Response.Redirect din_side_med_formen.asp
Avatar billede axkris Nybegynder
23. august 2005 - 17:13 #10
Takker alle, vi må have misfortsået hinanden eller også har jeg forklaret mig for dårligt :-)

Jeg har allerede redirects, så folk ikke kan blade rundt på asp-sider, som roder med databasen mv.

Jeg prøver på en anden måde.

Jeg har indbetalings-formular, som er delt op over flere forms, en form på hver sig (så folk ikke skal indtaste det hele på en gang). Og i den sammenhæng må folk ikke blade tilbage og lige ændre på noget og prøve igen.

Der er altså ikke tale om, at der ikke må blades tilbage til en asp side (fordi det kan man i forvejen ikke i mit tilfælde), men mere at brugerne ikke må blade tilbage til tidligere forms. Kan I hjælpe?

Det er altså tale om noget ala at slå history fra i browseren. Men hvordan gør man det? Eller at der ikke caches.
Avatar billede axkris Nybegynder
23. august 2005 - 17:13 #11
en form på hver sig = en form på hver html-side
Avatar billede roenving Novice
23. august 2005 - 17:15 #12
Jeg ville lave det som en stor form, så vise/skjule de forskellige sektioner efterhånden !-)
Avatar billede axkris Nybegynder
23. august 2005 - 17:19 #13
Ok, men det kan jeg desværre ikke, da jeg skal gøre brug af en standard ewire betalings-form, som er den midterste form.
Avatar billede nielle Nybegynder
26. august 2005 - 09:13 #14
Du kan ikke styre hvad der sker på Ewires form - derfor kan du heller ikke forhindre at folk trykker backspace på denne.

Bortset fra det så kan jeg ikke helt lige indse hvordan folk skulle kunne snyde vha. snedig brug af backspace og andre kunstgreb. Du færdiggøre vel først ordren når Ewire melder tilbage at betalingen er ok?
Avatar billede axkris Nybegynder
29. august 2005 - 23:36 #15
Takker - jeg har lavet en anden løsning med nogle session objects, så folk ikke kan bladre tilbage (det kan de godt, men det virker ikke i asp'en) på vigtige sider, hvor de ikke længere bør have adgang. Tryk svar alle :-)
Avatar billede nielle Nybegynder
05. september 2005 - 19:19 #16
Ingen point til mig på denne her - ellers tak for tilbudet :^)
Avatar billede axkris Nybegynder
06. september 2005 - 00:14 #17
:-)
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