Avatar billede bas Forsker
23. marts 2004 - 21:05 Der er 20 kommentarer og
1 løsning

Undgå page has expired ?

Hej

Kan man som udvikler selv sørge for, at de
sider man laver ikke viser "page has expired" ?

Jeg har forstået, at det som regel opstår, når
der bliver postet i en formular, og man klikker
tilbage, og at det er en eller anden indbygget sikkerhed.

Men er her en, der en gang for alle kan forklare mig, hvordan
jeg kan forhindre, at det opstår ?

Jeg har på eksperten.dk læst noget med header location,
sessioner og brugen af post i stedet for get.

Hvad er den "rigtige" løsning, og skal den skrives i forbindelse
med koden til formularen.

Jeg har en formular med en select boks, som referer til en anden fil, når der bliver klikket på submit.

På forhånd tak.

Hilsen Martin
Avatar billede olebole Juniormester
23. marts 2004 - 21:18 #1
<ole>

Den rigtige løsning er at lade PHP om sikkerheden og undlade at fiddle med den selv  :)

/mvh
</bole>
Avatar billede Slettet bruger
23. marts 2004 - 21:53 #2
Med header('location:etellerandet.php'); kan du sende brugeren tilbage til siden han kom fra, eller et andet sted hen.

Problemet med at siden ikke kan vises skyldes rigtignok POST i formen, og det kan du undgå ved at sende brugeren et andet sted hen efter submit.
Avatar billede olebole Juniormester
23. marts 2004 - 22:07 #3
Ja, så har jeg da misforstået spm'et ... jeg troede, spørgeren ville kunne gå tilbage til siden, uden at få 'fejlen'  :)
/mvh
Avatar billede bas Forsker
23. marts 2004 - 22:18 #4
Jeg har allerede to forskellige filer
- en fil med formularen, og en fil,
der linkes til, når der bliver
klikket på submit (altså en alm.
form action).

På den side brugeren kommer til
fra formularen, skal han/hun kunne komme
alle mulige steder hen, og vedkommende kan
selvfølgeligt også vælge at klikke på "Tilbage".

Jeg ved ikke, om problemet også opstår, fordi
den nye side indeholder et "id" - altså at den
henter den valgte option fra formularen.

Det er nok lettere at forklare, hvis jeg lige giver en adresse:

http://www.mploug.1go.dk/MONO/soeg.php

Man kan godt klikke på "Søg" og gå tilbage,
det er cool nok, men hvis man klikker på "søg"
og klikker på et af linkene i toppen og derefter klikker
på "Tilbage", så kommer "Page has expired".

Er det fordi browseren ikke længere kan "huske" det indtastede ?
Kan man undgå dette ?


/Martin
Avatar billede bas Forsker
23. marts 2004 - 22:43 #5
Man kan vel ikke lave nogle tricks
med f.eks.  if (isset($submit)){
eller noget vel ?
Avatar billede olebole Juniormester
23. marts 2004 - 22:50 #6
Både el_barto og jeg kender problematikken, men du må skrive, hvad du ønsker skal ske i stedet. Ønsker du, brugeren skal komme tilbage til en tom eller en udfyldt form?
Avatar billede bas Forsker
23. marts 2004 - 22:58 #7
Nå, jeg SKAL måske omkring formularen på tilbagevejen ?
ja, det er vel logisk nok.

Jamen hvordan "læser" browseren en select boks, er den ikke altid
udfyldt ?
Hvad vil I foreslå ?
hvad er mulighederne ?
Avatar billede olebole Juniormester
23. marts 2004 - 23:06 #8
Kan du ikke godt svare på, hvad jeg spørger om? Hvad ønsker du, skal ske?
Du behøver ikke komme forbi formularen, men når vi ikke aner, hvad du har tænkt dig - og ikke svarer, når vi spørger - er det lidt svært at hjælpe.
Avatar billede bas Forsker
23. marts 2004 - 23:11 #9
OK, jeg havde bare mmisforstået jer, undskyld.

Så tror jeg gerne jeg vil have, at man bliver sendt
til forsiden.
Er det det i mener ?
Avatar billede olebole Juniormester
23. marts 2004 - 23:32 #10
Hvis du mener, at brugeren kommer tilbage til formularen, når brugeren trykker på browserens 'Back' knap, kan du f.eks. komme udenom det på følgende måde:

Hvis du på en side ('side1.php') skriver:
  <a href="side2.php" onclick="location.replace(this.href);return false">Side 2</a>
... og 'side2.php' indeholder formen, kommer brugeren tilbage til 'side1.php', hvis der på 'side3.php' (resultatsiden) trykkes på 'Back'.

En anden mulighed er at gøre som el_barto skriver: At redirecte brugeren med en Header.
/mvh
Avatar billede bas Forsker
23. marts 2004 - 23:43 #11
Mange tak for det.

Kan du lige skrive et eksempel påel_bartos version ?

F.eks. hvis jeg på min side klikker på "Søg" og på resultatsiden
klikker på et toplink, og derefter kan komme tilbage til forsiden.

OK, og den du har skrevet.....

<a href="side2.php" onclick="location.replace(this.href);return false">Side 2</a>
... og 'side2.php' indeholder formen, kommer brugeren tilbage til 'side1.php', hvis der på 'side3.php' (resultatsiden) trykkes på 'Back'.

.....skal skrives sammen med formen ?
Avatar billede bas Forsker
23. marts 2004 - 23:48 #12
mit problem opstå egentligt først, når
man på resultatsiden klikker på
et toplink, og derefter klikker
på back.

men der kan jeg måske stadigvæk bruge dit eksempel ?
Avatar billede bas Forsker
23. marts 2004 - 23:56 #13
olebole > jeg troede, spørgeren ville kunne gå tilbage til siden, uden at få 'fejlen'  :)

Jeg tror du har forstået mig rigtigt nok.
Avatar billede olebole Juniormester
24. marts 2004 - 00:53 #14
Nu fatter jeg med højglansforkromet statsgaranti ikke en stråhat af, hvad du mener ...?!??!!!
Avatar billede bas Forsker
24. marts 2004 - 10:44 #15
Hmm, jeg er selv blevet lidt forvirret.
Jeg prøver lige at skitsere for mig selv,
så vender jeg tilbage.

/Martin
Avatar billede bas Forsker
24. marts 2004 - 10:57 #16
Start med at gå ind her:

http://www.mploug.1go.dk/MONO/soeg.php

Klik på "Søg"

Klik på et tilfældigt toplink

Klik på Back

Her vil jeg gerne undgå "Page has expired" og i stedet sende
brugeren tilbage til formularen (soeg.php).
Avatar billede bas Forsker
24. marts 2004 - 18:58 #17
OK, jeg læste et sted, at problemet kunne skyldes,
at mappen med temporary internet files var fyldt.
Jeg har nu slettet de midlertidige filer, og nu virker det.

MEN nogle skriver noget om at problemet opstår pga.
dårlig kodning - altså at udvikleren kan gøre noget for at
undgå at fejlen opstår.

Jeg er bare ikke klar over hvad.
olebole og el_barto har kommet med nogle forslag, men jeg har også læst noget om
sessioner.

/Martin
Avatar billede bas Forsker
09. september 2004 - 15:05 #18
- olebole

poster du et svar, så lukker jeg.
Avatar billede olebole Juniormester
09. september 2004 - 17:53 #19
Jeg kan ikke se, hvordan du skulle kunne undgå en 'Page has expirered' med sessions - mon ikke de har ment noget andet?  :)
Avatar billede bas Forsker
09. september 2004 - 18:00 #20
Jeg har efterhånden glemt hvad mit spr. handlede om :-)

Jeg har bare været ved at lukke mine spørgsmål.

/Martin
Avatar billede olebole Juniormester
09. september 2004 - 19:28 #21
Hehe ... det har jeg set, du er ved andre steder. Tak, for points  ;o)
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