Page has expired

Tags:    php

<< < 12 > >>
Hej udviklere


Det problem jeg beskriver herunder
er vist klassisk.
Det handler om det der med at man kommer
fra en formular til en ny side. På den nye side klikker man på
et link og derefter på browserens Tilbage-knap
kommer "Page has expired".

Det har vel noget at gøre med at siden nu mangler nogle parametre.

Kan man som udvikler gøre noget for at brugeren undgår
problemet.

Nedenfor beskriver jeg det konkrete problemstilling.
Efter at jeg har slettet mine midlertidige internet filer
virker det godt nok.

Men jeg vil gerne høre, om man som udvikler kan forbedre sin kode (PHP) for at undgå fejlen.

Jeg har nemlig læst, at problemet nogle gange skyldes dårlig kodning.
Jeg har bl.a. læst, at man måske kan lave noget med header (location)
og session_cache_limiter.

Kender du til problematikken, og kan du komme med et eksempel på et løsningsforslag ?

Gå først ind her:

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

Klik på "Søg"

Klik på et tilfældigt link i toppen

Klik på browserens Tilbage-knap

Det var her "Page has expired" opstod hos mig.
Men er det kun et spørgsmål
om brugerens browseropsætning og midlertidige internet filer, eller kan jeg som
udvikler gøre noget ved koden for at forhindre det ?

Pyha, det var en længere smøre, jeg håber du forstår spørgsmålene,
ellers så spørg endeligt.

På forhånd tak

Hilsen Martin



12 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
>.....vil altså automatisk sende brugeren videre
til den side der er angivet, uden "Page has expired" ?

nej, ikke sådan

> Sker det først i det øjeblik der bliver klikket på Back-knappen ?

1: formen

2: side, der modtager formen, og med location

3: side der sendes videre til

når man subnitter formen (1) ser det us somom man kommer direkte til siden (3). når man klikker tilbage springes (2) over, så man ikke får fejlen. Man kommer slet ikke til at se side (2)

>Kan man nøjes med header ("Location: en_url"); ?
- altså det er ikke nødvenidgt med det der "redirect...." ?

ja, det bør den selv sørge for



Hvis du laver method om til "get" i stedet for "post" (og ændrer i den fil som modtager variablerne selvfølgelig), så gør den det ikke...

[Redigeret d. 24/03-04 23:19:07 af ToPCaT]



der er noget med at dine form-data skal sendes med igen, og det gør de ikke automatisk.

med location headeren kan du gøre, så man ikke kan trykke tilbage til den side der modtager formen, men her tror jeg det ville være nemmest at bruge get-method



Hvis du laver method om til "get" i stedet for "post" (og ændrer i den fil som modtager variablerne selvfølgelig), så gør den det ikke...

[Redigeret d. 24/03-04 23:19:07 af ToPCaT]



OK, hvis jeg ændrer det til get i formularen og i den fil der
linkes til ?

Er den eneste forskel på post og get at get viser alle oplysningerne i adresselinien ?



ja, og post sender dem som headers. Det er nok mere begrænset hvad du kan sende som get end hvad du kan sende som post



ja, og post sender dem som headers. Det er nok mere begrænset hvad du kan sende som get end hvad du kan sende som post



Jeg har nu slettet mine midlertidige internet files og ændret metoden til GET.
Det har løst problemet.
Men hvis man skal bruge POST, hvad gør man så konkret ?

Noget med

function Redirect ($url) {
Header ("HTTP/1.0 302 Redirect");
Header ("Location: " . $url);
exit;
}
?>

...som beskrevet her http://www.magicwebsolutions.co.uk/Database-Development-3.php#gracefully ?



jaja, men den kan heller ikke bruges i alle tilfælde, fx i en søgning, hvor dataene ikke skal gemmes, men bare vises, for du går jo straks videre til en anden side.




Bare lige for at blive lidt klogere.
Man kan altså i nogle tilfælde bruge:


function Redirect ($url) {
Header ("HTTP/1.0 302 Redirect");
Header ("Location: " . $url);
exit;
}

...?

Skal funktionen så sættes i toppen af den fil, som indeholder formularen, eller hvad ?

Kan du henvise til et konkret eksempel ?

/Martin




header ("Location: en_url");

skal stå et sted på den side, der modtager formen.


exit;

stopper scriptet, man da det jo ikke skal skrive noget på skærmen, skal den ikke bruges




header ("Location: en_url");....

.....vil altså automatisk sende brugeren videre
til den side der er angivet, uden "Page has expired" ?

Sker det først i det øjeblik der bliver klikket på Back-knappen ?

Kan man nøjes med header ("Location: en_url"); ?
- altså det er ikke nødvenidgt med det der "redirect...." ?

/Martin





<< < 12 > >>
t