Ik heb een pagina A waarop een Stuur door knop zit. Als deze aangeklikt wordt, dan start ik pagina B waarin o.a. een emailadres ingegeven kan worden en deze met een verzendknop verzonden kan worden. Vervolgens wordt in pagina C getoond dat de mail verzonden is en wordt er een hyperlink getoond om terug te keren naar pagina A

In eerste instantie heb ik daarvoor javascript:javascript:history.go(-2) gebruikt. Dat werkt prima, totdat je in pagina B een fout maakt in bijvoorbeeld het emailadres. Als je daarna na ingave van het juiste emailadres op verzenden drukt en je gaat weer via javascript:javascript:history.go(-2) terug, dan kom je in pagina B terecht waarin je het foutieve emailadres ingegeven hebt.

Ik dacht dit te omzeilen door een rechtstreekse link naar pagina A in pagina C op te nemen. Dat werkt prima, maar als je vervolgens vanuit pagina A met de back-knop van de browser een pagina terug wil gaan dan kom je ongewild weer in pagina B terecht. Op zich vind ik deze oplossing ook mooier omdat je dan geen javascript gebruikt.

Ik hoop dat mijn probleem duidelijk is. Wie heeft hier een passende oplossing voor?
Dat kan inderdaad met een PHP-sessie. Hierin kun je bijvoorbeeld het e-mailadres opslaan plus een statuscode. Dat geeft je al voldoende informatie om pagina A, B of C te tonen.
Bedankt voor de reactie. Het redirecten naar de juiste pagina is niet het probleem. Als ik voor de tweede oplossing kies dan is het probleem dat ik bij het gebruik van de browser back-button weer in scherm B terecht kom. Hoe kan ik dit voorkomen?
A R op 01/10/2013 10:34:47

Bedankt voor de reactie. Het redirecten naar de juiste pagina is niet het probleem. Als ik voor de tweede oplossing kies dan is het probleem dat ik bij het gebruik van de browser back-button weer in scherm B terecht kom. Hoe kan ik dit voorkomen?

Dit kun je ook voorkomen door de huidige pagina op te slaan in de sessie. In pagina C registreer je dat je inmiddels in C bent aanbeland:


<?php
// In pagina C de huidige pagina opslaan in de sessie
session_start();
$_SESSION['laatste_pagina'] = 'C';
?>


Daarmee kun je dan in pagina B een eventuele redirect uitvoeren:


<?php
// In B controleren of we niet naar C moeten
session_start();
if (isset($_SESSION['laatste_pagina']) && $_SESSION['laatste_pagina'] == 'C') {
    header('Location: http://www.example.com/pad/naar/pagina-c.php');
    exit;
}
?>

Wellicht is daar dan wel Javascript handig voor.
Dat bij on-back, je niet 1 maar 2 (of 3, afhankelijk hoe vaak er een fout was: dat is te tellen) terug te gaan.
Maar als het dan toch met Javascript kan: stuur dan door naar pagina_A.
Heren, het is gelukt. Bedankt voor de input!

Reageren