Hoi,

Ik heb een formulier en na succesvol versturen gebruik ik een JS redirect naar de bedankpagina.
Als ik dan op de terug knop in mijn browser druk zorg ik ervoor dat de formulier input (BF cache) gereset wordt, middels een pageshow EventListener (dank Ron Kr.)

In mijn vorige topic hebben we het hier al over gehad, maar omdat ik een vervolgvraag heb, en dat topic daar niet over gaat, heb ik hierbij een nieuw topic gemaakt.

In 1 situatie reset formulier niet (volledig):
1) Ik vul formulier verkeerd in
2) Druk op versturen en krijg foutmelding
3) Ik vul formulier correct in
4) Druk op versturen en krijg bedankt pagina
5) Ik druk op terug knop in mijn browser
Formulier niet (volledig) leeg.

Ik heb tijdelijk een voorbeeld online gezet, zie deze link.

Wat is hier aan de hand en hoe kan ik dit fixen?
Als jij er zorgen maakt om 'headers already sent', dan weet je dat je iets behoorlijk fout doet.
Je moet gewoon geen output voor de header zetten! En ja, daar zijn altijd oplossingen voor.

En mocht je er tegenaan lopen, dan ben je al op PHPhulp.


<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $naam = trim($_POST['naam']);

    // Hier zou je bv. iets opslaan in de database
    // $mysqli->query("INSERT INTO ...");

    // Redirect naar GET
    header('Location: form.php?success=1');
    exit;
}
?>

Werkt perfect!
Je moet NOOIT maar dan ook NOOIT enkel op JavaScript vertrouwen. Controles en validatie moet je ook altijd serverside uitvoeren.
En? Is het nog gelukt?
Sorry, ik heb je vorige reactie gemist.
Nog niet uitgetest, maar ik had nog niet gezegd dat ik het gebruik in een WordPress plugin, en dan heb je niet de absolute zekerheid dat het op tijd is.
Ter info, ik gebruik de JS alleen voor de redirect, uiteraard niet voor input validatie.

Reageren