03. oktober 2003 - 15:25Der er
10 kommentarer og 1 løsning
Deaktivering af "back"-funktion
Jeg har et problem i forbindelse med opbygningen af et site, hvor jeg har brug for, at man ikke kan kalde back-funktionen i browseren (eller noget lignende, der gør det samme).
Problemet er, at en servlet requestes med det samme request, når der trykkes på back. Denne servlet indsætter i en database - og det giver dubletter! Dette må ikke kunne lade sig gøre.
Hvordan forhindrer jeg det?
Jeg har en ide om, at der skal sættes nogle headere på requestet, men hvordan sætter man f.eks. "If-modified-since". Og er dette en rigtig tanke, altså løser det problemet...
istedet for at du bruger alm links kan du bruge onclick="document.location.replace('url.jsp')" ... så skifter man side uden at det gemmes som ny entry i history ..
Jeg tænker på hvordan jeg på SERVLETen kan lave en test af om request'et er det samme som sidst. Der må gerne være oplysninger i basen som er ens, men bruger skal bare være klar over at det ham som har oprettet dem. Og det er han ikke hvis der oprettes en dublet når han trykker på back.
Arne v jeg skal nok flytte den del der om taler "back" til javascript.
Og det med onclick, ved jeg ikke. For det er en form som get'ter en servlet.
browser requester form.jsp form.jsp laver et hidden field med time stamp browser submitter til servlet servelet checker om timestamp er det samme som i session ja => abort nej => process og gem timestamp i session
i det request der sendes i servletten kunne du fx havde et felt med tidspunkt for at requestet er "oprettet". Så fx hvis du har en side med en form der kalder servletten så lave et usynligt felt der sættes til System.currentTimeMillis();
i session info kan du så havde et felt der hedder lastRequest og så bed servletten om at ignorere requested hvis det har samme id/timestamp som det sidst udførte.
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.