Zur Navigation

Nach Formular Absendung -> Weiterleitung + Message auf neuer Seite anzeigen

1 Tom12

Hallo,
Ich habe mir mal etwas Gedanken dazu gemacht, dass meine Weiterleitung nach Formularen etwas unsauber ist.
<?php
if (isset($_POST['submit'])) {
   $msg = 'Das Senden war erfolgreich';
   sleep(4);
   header('Location: https://example.com/neue_seite.php');
}
?>

Jetzt sind die Nachteile daran zum einen, dass der Nutzer 5 Sekunden warten muss, bis er zur neuen Seite gelangt und zum anderen, dass die Meldung verschwunden ist, sobald er sich auf der neuen Seite befindet.

Ich könnte natürlich das Problem auch so lösen:
<?php
if (isset($_POST['submit'])) {
   header('Location: https://example.com/neue_seite.php?msg=Das Senden war erfolgreich');
}
?>
so dass ich auf der neuen Seite das ganze aus dem GET-Parameter auslesen kann, allerdings finde ich diese Variante auch etwas blöd, weil dadurch die URL nicht mehr schön bleibt. Aus diesem Grund möchte ich bei der Übermittlung auf eine andere Seite auf diese Methode verzichten.

Jetzt ist meine Frage: ist es möglich das ganze auf eine andere Seite weiterzuleiten und z. B. die Feheler- oder Erfolgsmeldungen z. B. per POST mitzusenden oder gibt es da eine noch einfachere Lösung?

Ich weiß, hier in dem Forum ist das auch so gelöst, dass wenn man einen Beitrag absendet, eine Erfolgsmeldung bekommt und dann nach ein paar Sekunden zum Thread weitergeleitet wird, aber es muss ja noch eine andere Lösung geben (andere Seiten schaffen das ja auch)

Edit: Ich hätte vielleicht noch die Idee das ganze über
$_SESSION['msg']
zu lösen, wie das funktionieren könnte und wie die Session dann nicht noch an alle andere Seiten übergeben wird, weiß ich leider nicht

01.10.2019 09:46 | geändert: 01.10.2019 09:50

2 Jörg Kruse

session_start()

$msg = '';
if (! empty($_SESSION['msg'])) {
    $msg = $_SESSION['msg'];
    $_SESSION['msg'] = '';
}

if ($msg) {
    echo $msg;
}

Hier im Forum war diese Lösung keine Option, da auch cookielose Gäste hier schreiben können sollten und die Session-ID aus Sicherheitsgründen nicht als URL-Parameter weitergerreicht werden sollte.

01.10.2019 10:14 | geändert: 01.10.2019 10:20

3 Tom12

Ich habe das Problem jetzt so gelöst bekommen:

<?php
if (isset($_POST['submit'])) {
   setcookie('msg', 'Das Senden war erfolgreich', time() + 60);
   header('Location: https://example.com/neue_seite.php');
}
if(!empty($_COOKIE['msg'])) {
    $msg = trim($_COOKIE['msg']);
    setcookie('msg', '', time() - 3600);
  }
echo $msg;
?>

01.10.2019 16:24

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]