23. august 2005 - 14:34Der 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.
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?
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]
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.
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.
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?
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 :-)
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.