[PHP] Form post, gebruiker klikt op terugknop: ERR_CACHE_MIS

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • HollowGamer
  • Registratie: Februari 2009
  • Niet online
Neem dit als voorbeeld:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$err = '';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    try {
           // probeer gebruiker in te loggen

           header('Location: ..'); // terug naar pagina voor login
           exit();
    }
    catch (Exception $e) {
      $err = $e->getMessage();
    }
}
echo $err;
?>
<form method="post">
<input type="email" name="email">
<input type="password" name="password">
</form>


Ik doe zoveel mogelijk aan valideren met HTML/JS, waarna vervolgens PHP het overneemt (bijvoorbeeld: bestaat de gebruiker wel? Wachtwoord correct? etc.). Dit doe ik aan de hand van de Try/Catch-methode.

Stel de gebruiker vult zijn gegevens in, waarna er volgens een (PHP) foutmelding ontstaat.
De gebruiker breekt vervolgens de handeling af door naar een andere pagina te gaan.
Vervolgens klikt de gebruiker terug naar de vorige pagina (d.m.v. de back-knop van de browser), met als resultaat dat het document is expired.
Op zich ook logisch, aangezien het form een post is en geen get is.

In IE kan ik dit oplossen door de volgende PHP code:
code:
1
session_cache_limiter('private_no_expire');


Maar in Chrome resultaat dit nog steeds in de ERR_CACHE_MIS melding, tenzij ik caching volledig uitzet met de Developer Tools.

Stel ik kan niet een get methode gebruiken, en ook niet redirecten naar iets anders, wat is dan de beste oplossing?
Ik zou bijvoorbeeld een jQuery kunnen gebruiken, die de form post verwerkt in een andere pagina.

Maar misschien zijn er betere oplossingen, ik hoor het graag. :)

Erg bedankt!

Acties:
  • 0 Henk 'm!

  • Montaner
  • Registratie: Januari 2005
  • Laatst online: 10-10 13:14
Misschien omdat je al HTML verstuurt voordat je controles doet en een redirect?

Edit: en het is gemarkeerd als een bug door Google: https://code.google.com/p...sues/detail?id=424599#c23

[ Voor 42% gewijzigd door Montaner op 03-06-2015 11:47 ]


Acties:
  • 0 Henk 'm!

  • HollowGamer
  • Registratie: Februari 2009
  • Niet online
trix0r schreef op woensdag 03 juni 2015 @ 11:46:
Misschien omdat je al HTML verstuurt voordat je controles doet en een redirect?

Edit: en het is gemarkeerd als een bug door Google: https://code.google.com/p...sues/detail?id=424599#c23
Noop, het heeft echt met de form input te maken.

Het grappige is dat hetzelfde ook gebeurd bij Tweakers.net:
- Klik op Inloggen
- Vul geen goed wachtwoord in
- Klik op Tweakers-logo
- Klik op back: ERR_CACHE_MIS

Klopt, gisteren kwam ik deze bug ook tegen.
Er staat echter fixed bij, maar het heeft iets met caching te maken.

Het enige wat ik nog zou kunnen doen is de Cache-control manipuleren.
Maar ik vroeg me af of mijn gekozen methode wel valide is. ;)

[ Voor 31% gewijzigd door HollowGamer op 03-06-2015 11:51 ]


Acties:
  • 0 Henk 'm!

  • Amanush
  • Registratie: Mei 2012
  • Laatst online: 18-06 09:30

Amanush

Saai persoon.

Probeer HTML niet met PHP te mengen.. Maak gebruik van bestaande Templating Engines zoals Twig en Blade.
Pas waar mogelijk SoC en MVC toe.

Ga tot de luiaard, gij mier! Zie haar wegen en wordt wijs.


Acties:
  • 0 Henk 'm!

  • HollowGamer
  • Registratie: Februari 2009
  • Niet online
Amanush schreef op woensdag 03 juni 2015 @ 12:14:
Probeer HTML niet met PHP te mengen.. Maak gebruik van bestaande Templating Engines zoals Twig en Blade.
Pas waar mogelijk SoC en MVC toe.
Thanks voor de reacties. :)

Maar even voor de duidelijk ik heb het allemaal gescheiden van elkaar! En maak ook gebruik van een MVC.
Het voorbeeld in de TS is gewoon om het zo simpel als mogelijk weer te geven. ;)