Avatar billede hoejgaard Juniormester
07. maj 2008 - 11:22 Der er 20 kommentarer og
1 løsning

opdatering af side ved tilbage klik

Hej.
Jeg er igang med at lave en søgefunktion på en hjemmeside.
Når man så klikker på et emne i den liste der er fremkommet som resultat af søgningen, kommer man så til en anden side hvor man kan læse om det emne. Problemet er så at hvis man så vil tilbage til resultatlisten, ved at klikke på tilbage knappen i browseren, så får man at vide at man er nødt til at opdatere siden..
Hvorfor sker det ? og hvordan kan jeg evt undgå det ??
Nogen der kan hjælpe mig på vej ?
Avatar billede w13 Novice
07. maj 2008 - 11:23 #1
Det sker på sider, som har fået overført form-data.
Brugeren er nødt til at vælge, om han vil hente sidens gamle form-data eller helt droppe dem, når han vil se siden igen.
Avatar billede hoejgaard Juniormester
07. maj 2008 - 11:27 #2
okay men hvis man vil se sidens gamle form data hvordan gør man så....

I resultatlisten er der et link for hvert resultat som fører mig til den anden side hvor jeg kan læse om emnet. Er jeg så nødt til at overføre alle variablene med linket for at kunne få dem med tilbage ved klik på tilbage knappen ??
Avatar billede hoejgaard Juniormester
07. maj 2008 - 11:30 #3
iøvrigt er det ikke selve formen jeg skal tilbage til men kun resultatsiden...
ved ikke om vi misforstår hinanden ?
Avatar billede w13 Novice
07. maj 2008 - 11:31 #4
Jep, resultatsiden har jo fået overført de indtastede data fra formsiden.
Disse er formdataene.

Og hvis man vil se dem, trykker man "Ok" til den boks, som du siger, kommer op.
Avatar billede hoejgaard Juniormester
07. maj 2008 - 11:49 #5
Det må da være muligt at undgå at skulle bruge opdateringsknappen...
siger du "jep" til at jeg skal overføre variablene med linket så jeg kan føre dem med tilbage.. de bliver vel ikke gemt, medmindre det er som sessions de bliver gemt eller hvad ??
det er det her der kommer op :



Websiden er udløbet.
 
  Mest sandsynlige årsag:
Den lokale kopi af denne webside er forældet, og webstedet kræver, at du henter den igen.

  Prøv at:
    Klikke på knappen Opdater på værktøjslinjen for at genindlæse siden. Når du har opdateret siden, skal du muligvis navigere til den pågældende side igen, eller angive oplysninger igen. 

    Flere oplysninger

Prøv følgende, hvis du fortsat har problemer:

Klik på Funktioner, klik på Internetindstillinger, og klik derefter på fanen Avanceret i Internet Explorer.
Rul ned, og fjern markeringen i afkrydsningsfeltet "Gem ikke krypterede sider på disk" under Sikkerhedsindstillinger.
Avatar billede w13 Novice
07. maj 2008 - 11:58 #6
Jeg sagde bare jep til, at det var resultatsiden, jeg snakkede om.

Og du burde ikke behøve at overføre variablerne for at få dem igen.

Jeg ved dog ikke lige, hvordan du skulle kunne undgå at få den formdata-besked, som du gør.

Medmindre du altså overfører alt det indtastede i formen som querystrings i stedet for formdata.
Avatar billede hoejgaard Juniormester
07. maj 2008 - 12:08 #7
"Medmindre du altså overfører alt det indtastede i formen som querystrings i stedet for formdata."

Øh hvad mener du med det ??
Avatar billede erikjacobsen Ekspert
07. maj 2008 - 12:08 #8
Man undgår det på denne måde

1) Siden med <form method="post">
2) poster til en siden, der gemmer resultatet i DB etc, og som derefter'
3) redirecter til en side, der viser hvad der skal vises

De tre sider kan så være samme .php-fil hvis man vil.
Avatar billede w13 Novice
07. maj 2008 - 12:10 #9
I stedet for at have en method="post" på din form, så sæt en method="get".

Så sendes data ikke som formdata, der skal modtages med $_POST(), men som querystrings, der skal modtages med $_GET().

Det er besværligt, men det er umiddelbart den eneste løsning, jeg kan komme på.
(Medmindre du bare begynder at lade produkterne åbne i nye vinduer - så slipper du jo for det problem. :)

Men den boks du ser, er altså meget standard, og kan ikke omgåes, når man gør, som du gør.
Avatar billede erikjacobsen Ekspert
07. maj 2008 - 12:11 #10
Du skal ikke følge w13's forslag.
Avatar billede w13 Novice
07. maj 2008 - 12:14 #11
:P

Nej, din løsning er nok noget federe.
Under alle omstændigheder er den sikker, og det er GET jo bestemt ikke.

Alternativt til at smide i en DB, kan det vel også lægges i en Session, kan det ikke?
Avatar billede erikjacobsen Ekspert
07. maj 2008 - 12:19 #12
Hvor du gemmer data, må du selvfølgelig selv om  ;)

Men princippet er egentlig bare at man ikke må vise HTML-output fra en POST-request, men altid skal redirecte umiddelbart efter behandling af data.
Avatar billede w13 Novice
07. maj 2008 - 12:20 #13
Af andre grunde end for at undgå den boks, som hoejgaard bakser med?
Avatar billede hoejgaard Juniormester
07. maj 2008 - 16:41 #14
Nu har jeg gemt variablene i nogle sessions, men der kommer stadig det vindue op ??
Avatar billede hoejgaard Juniormester
07. maj 2008 - 17:01 #15
måske er det fordi jeg ikke redirecter ?? ved ikke rigtig hvad der menes med det ??
Avatar billede hoejgaard Juniormester
07. maj 2008 - 17:24 #16
er det med header ?
Avatar billede erikjacobsen Ekspert
07. maj 2008 - 17:34 #17
Jah:    header("Location: etellerandet.php");
Avatar billede hoejgaard Juniormester
07. maj 2008 - 23:29 #18
erik
har fået det til at virke !
mange tak for hjælpen....

Jeg syntes i begge fortjener points for hjælpen, så læg et svar !
Avatar billede w13 Novice
08. maj 2008 - 07:54 #19
:)
Avatar billede erikjacobsen Ekspert
08. maj 2008 - 08:33 #20
Jeg samler slet ikke på point, tak.
Avatar billede hoejgaard Juniormester
08. maj 2008 - 09:44 #21
erik
det er iorden.
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