Avatar billede roadrunr Nybegynder
06. februar 2002 - 08:40 Der er 5 kommentarer og
3 løsninger

Formular + cache + "Tilbage-knap"

Når en bruger har gennemført en formular, hvordan undgår jeg så at vedkommende kan gå tilbage og submitte oplysningerne igen?

Mit formularsystem er som følgende:
1. Indtastningsfelter
2. Bekræftelsesside
3. Formular gennemført-side

Da oplysningerne først indsættes i databasen på "side 3" - gemmer jeg oplysningerne fra indtastningsfelterne i sessions når brugeren kommer til "side 2". På "side 3" indsætter jeg værdierne fra mine sessions i databasen, hvorefter jeg sletter værdierne i sessions.

Det skal gerne være sådan at, hvis brugeren trykker tilbage(på "side 3") - så bliver vedkommende sendt til "side 1".
Avatar billede freedom Nybegynder
06. februar 2002 - 08:45 #1
Lave et tjek om det er sat ind i database!!!!
Avatar billede cool_casper Nybegynder
06. februar 2002 - 08:46 #2
Så kan du sætte et fejl=nej bag på din action i din <FORM> på den første side...
Så der står noget i retningen  af: <FORM ACTION="Bekræftelsesside.asp?fejl=nej">

Og så på Bekræftelsesside.asp sætter du dette ind i toppen:
If NOT Request.QueryString("fejl") = "nej" then
Response.Redirect "side1.asp"
End If

Så Redirecter den til side et med mindre der skriver Bekræftelsesside.asp?fejl=nej  !! Så enkelt kan det være....!!
Avatar billede agony Nybegynder
06. februar 2002 - 08:50 #3
du kan oprette endnu en session som holder styr på på hvilken siden brugeren befinder sig. Når så brugeren kommer til side 2 og denne session er sat til 3 så laver du en response.redirect til side 1. Nemt :)
Avatar billede roadrunr Nybegynder
06. februar 2002 - 09:00 #4
Tak for Jeres svar. Jeg vil lige prøve dem af!

agony: jeg har tidligere prøvet din metode, men det lader til, at asp-siden ikke bliver kørt igen, og at den derfor ikke læser status på sessions!

Jeg har følgende funktionliggende i toppen, som skulle forhindre cache på normal vis.

Function NoCache()
    Response.Buffer = True
    Response.ExpiresAbsolute = Now() - 1
    Response.Expires = 0
    Response.CacheControl = "no-cache"
End Function

Skal den evt. justeres for at Jeres løsninger virker?
Avatar billede coltau Juniormester
06. februar 2002 - 10:49 #5
Som du selv er inde på så reloades siden ikke nødvendigvis når brugeren trykker tilbage. Derfor er du nødt til at gøre ligesom freedom siger. Lav et check for om det allerede er sat ind i databasen. Det kan evt. gøres således:

På side 1 sættes Session("UpdateID") = ""
På side 3 sættes Session("UpdateID") = ID-nummer på indsat post.

Kontrollen skal så gennemføres på side 3:
if Session("UpdateID") = "" then
  ' Ok - ikke sat ind endnu.
else
  ' Fejl: Dataene er sendt en gang.
end if
Avatar billede roadrunr Nybegynder
06. februar 2002 - 10:52 #6
coltau: hvis siden ikke reloades, så kan jeg jo heller ikke lave det check som du foreslår!
Avatar billede coltau Juniormester
06. februar 2002 - 11:45 #7
Hvis side 2 (bekræftelsessiden) udformes som en formular med submit-knap -så tvinger du ASP-koden for side 3 til altid at blive udført.
Avatar billede roadrunr Nybegynder
06. februar 2002 - 11:55 #8
Okay på den måde...!

Men dvs. at "handlingen" først sker når brugeren på "ny" prøver at submitte. I stedet skulle det gerne være når brugeren kommer "tilbage" til side 2, at vedkommende skulle sendes til start (side 1).

Hvordan gøres det?
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
Kurser inden for grundlæggende programmering

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