[IE/Cache] Back na versturen form

Pagina: 1
Acties:
  • 163 views sinds 30-01-2008
  • Reageer

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Topicstarter
Wel een bekend probleem, maar ik kan het nog niet oplossen.

Je vult een form (zoekactie) in en submit het.
Dan krijg je een pagina met de resultaten.
Daar kies je er 1 uit en krijg je de details te zien van de keuze.
Dan druk je op "Back" (omdat je terug wilt naar de zoekresultaten) in IE en je krijgt een witte pagina met "Page has expired". De informatie wordt niet opnieuw verstuurd uit veiligheidsoverwegingen.

Wat ik wil is dat dat dus wel gebeurt, ik wil gewoon die zoekresultaten weer zien. Net als bijvoorbeeld hier op GoT. Het liefst dat de formdata opnieuw verstuurd wordt, maar de pagina uit de cache halen is ook goed.

Ik heb al het een en ander geprobeerd met HTTP (PHP, zie ook http://php.net/header) en meta (HTML) headers, maar niets lijkt invloed te hebben op IE, alles geeft "Page has expired".

In [rml][ PHP] Warning: Page Expiration[/rml] staat dat het niet kan. Maar hier op GoT werkt de zoekfunctie bijvoorbeed toch ook gewoon zo? Hoe zit dat nou?

  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
Heeft dat niet te maken met het verschil tussen GET en POST??

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Topicstarter
Ja, dat zou wel eens heel goed kunnen. Op GoT gaat het bijvoorbeeld dus ook zo zie ik. Vind het niet mooi, maar goed, als dat de enige oplossing is...

  • wicher|IA
  • Registratie: November 2000
  • Laatst online: 10-04-2023
Volgens mij gaat het inderdaad bij GET standaard wel goed.
Als je per se aan POST vast moet houden kun je het ook zo doen:
Je POST naar pagina 1. De ingevoerde gegevens laat je even tijdelijk opslaan op de server. Pagina 1 redirect direct naar pagina 2 (ongemerkt). Op die pagina 2 staan vervolgens pas de zoekresultaten (oid), die tot stand zijn gekomen adhv de tijdelijk opgeslagen invoer in pag. 1.
Als de user later teruggaat met back, gaat-ie terug naar pag. 2. Dat gaat gewoon goed, aangezien-ie gewoon via een GET (de redirect) op pag. 2 was gekomen. De POST was naar pag. 1 verstuurd.
Duidelijk wat ik bedoel?

Sowieso komt zo'n constructie vaak van pas, bijvoorbeeld om te voorkomen dat users door op 'back' te drukken alle invoer nogmaals submitten.

[ Voor 8% gewijzigd door wicher|IA op 22-04-2005 13:14 ]


  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Topicstarter
Bedankt voor de replies, ik verstuur het form nu met GET.

Maar volgens mij komen de GET-waarden niet aan, omdat ik ook gebruik maak van (o.a.) deze .htaccess regel:
code:
1
RewriteRule ^([a-z]+)/$ home.php?page=$1


Klopt het dat bij een url als
code:
1
http://www.domein.nl/zoeken/?mid=2&tid=0
de waarde van bijv. mid (2) nu niet overkomt? Een simpele $_GET['mid'] geeft null. Als dat klopt, hoe kan ik dan de htaccess-regel uitbreiden?

[ Voor 10% gewijzigd door X-Lars op 23-04-2005 11:30 ]


  • wicher|IA
  • Registratie: November 2000
  • Laatst online: 10-04-2023
Volgens mij klopt dat ja. Je zoekt namelijk alleen op letters a tot z [a-z]. Daar vallen de ?, = en & volgens mij niet onder, dus pikt-ie het stuk na de ? niet mee. Waarom zoek je eigenlijk alleen op a tot z?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 22:49

curry684

left part of the evil twins

Searches zijn repeatable en horen dus per definitie met GET gedaan te worden, POST is voor eenmalige acties die niet herhaald mogen worden: en vandaar ook het betreffende gedrag bij IE, FF en andere browsers.

Professionele website nodig?


  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Topicstarter
Ik was misschien niet helemaal duidelijk in mijn laatste post. De RewriteRule die daar staat was bedoeld voor URL's als /contact/ en /zoeken/. De GET-waarden van de zoekactie komen daar dan nog achter (maar dan niet "mod-rewritten", zie de URL). Ik heb het uitgezocht en de oplossing is
code:
1
RewriteRule ^([a-z]+)/$ home.php?page=$1 [QSA]
Pagina: 1