[HTML PHP] Teruggaan naar een pagina die gepost is

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig met het bouwen van een website. Eén onderdeel is een zoekfunctie. Hier loop ik echter tegen een probleem aan.

Het zoeken wordt als volgt gestart:
1 De gebruiker vult een aantal velden in en drukt op zoeken.
2 Door op zoeken te drukken wordt het zoekformulier gepost.
3 Vervolgens worden door een PHP-procedure de zoekresultaten gegenereerd
4 De zoekresultaten worden op dezelfde pagina als waarop het zoekformulier staat onderaan weergegeven (ook door middel van PHP)

Dit werkt allemaal prima. Het probleem is echter dat wanneer één van de resultaten wordt aangeklikt en de bezoeker dus naar een andere pagina gaat, deze niet meer terugkan gaan door middel van de back-button van de browser. Er wordt dan namelijk weergegegven:

"Waarschuwing: de pagina is verlopen De opgevraagde pagina is gemaakt op basis van gegevens die u in een formulier hebt ingevuld. Deze pagina is niet meer beschikbaar. Uit voorzorg verzendt Internet Explorer de gegevens niet automatisch opnieuw voor u.

Klik op de knop Vernieuwen als u de gegevens opnieuw wilt verzenden en de pagina opnieuw wilt weergeven."

Dit is als ik het goed heb standaard als men terug wil gaan naar een pagina die gepost is, maar hoe kan ik dit voorkomen? Als ik bijvoorbeeld kijk naar de search van Got dan heeft men dit hier wel fatsoenlijk opgelost. Als ik bijvoorbeeld op de knop "2" druk dan wordt de pagina gepost en vervolgens op dezelfde pagina de tweede serie zoekresultaten afgbeeld. Als ik dan vervolgens een link aanklik en weer terugga dan werkt dit wel gewoon goed. Mijn vraag is dan ook: hoe krijgen jullie dat voor elkaar???

Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Er zijn twee oplossingen:

1. Geen POST maar een GET formulier gebruiken
2. De pagina naar zichzelf te laten redirecten.

Hier zijn zat oplossingen voor te vinden, met diezelfde mooie GoT search ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 23-07 18:19
Als je de Cache-Control op private zet zou het wel moeten werken :)

[ Voor 78% gewijzigd door SWINX op 07-09-2005 17:40 ]

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 17:11

RayNbow

Kirika <3

Uit de PHP manual:
[...]
I disagree. This is the correct way:
PHP:
1
2
3
4
5
function postredir($url) {
   header('HTTP/1.1 303 See Other');
   header("Location: ".$url);
   echo "We are now redirecting you to <a href='".urlencode($url)."'>$url</a>...";
}

303 See Other means convert any request into a GET request - i.e. even if it submitted a POST request to this url, use GET on the redirected URL.

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Kijk ook even naar session_cache_limiter()

Verwijderd

Topicstarter
Bedankt! Ik ga er wel uitkomen nu.
Pagina: 1