Redirect PHP

tobi.wld

Lt. Junior Grade
Registriert
Dez. 2020
Beiträge
268
Hallo zusammen, ich habe vorhin mein eigenes Kontaktformular in PHP geschrieben und möchte nach der erfolgreichen bzw. nicht erfolgreichen Mail-Sendung einen Alert für den Benutzer einblenden. Dies klappt auch wunderbar.

Nun möchte ich dass der User nachdem er den Alert 3 Sekunden sehen konnte automatisch weitergeleitet wird.

Dazu habe ich mithilfe der sleep-Funktion folgendes ausprobiert:
PHP:
if (@mail($emailAddress, $subject, $message)) {
   echo "<div class='alert alert-success' role='alert'>Erfolg! Ihre Nachricht wurde gesendet.</div>";
   sleep(3);
   echo "<script>window.location.replace('../');</script>";
} else {
   echo "<div class='alert alert-danger' role='alert'>Fehler! Bitte versuchen Sie es erneut.</div>";
   sleep(3);
   echo "<script>window.location.replace('./');</script>";
}

Die Weiterleitung funktioniert auch, allerdings zeigt er mir den Alert erst ganz kurz vor der Weiterleitung erscheint. Das möchte ich ändern. Der Alert soll quasi angezeigt werden und dann erst der sleep starten.

Hat da jemand Vorschläge wie ich das lösen kann?
 
Mach den 3 sekunden timer mit javascript - nicht mit php.
 
  • Gefällt mir
Reaktionen: netzgestaltung, tobi.wld, chrga und 2 andere
Als Kontext dazu. PHP wird beim laden der Seite ausgeführt, bastelt ein HTML Dokument zusammen, dieses wird dem Web-Server übergeben - der leitet es an den Browser weiter.

Sprich PHP wird einmal pro Seitenaufruf ausgeführt. Wenn du im PHP einen 3 Sekunden Timer einbaust, dauert die Ladezeit (bis der Browser das HTML Dokument bekommt) einfach 3 Sekunden länger.

Sobald der Browser das Dokument hat führt er dann dein JavaScript aus - deswegen hat es nicht funktioniert wie du dir das gewünscht hast.

JavaScript hingegen wird vom Browser ausgeführt und zwar erst wenn, die HTML Seite geladen wurde - deswegen funktioniert dort der Timer 👍
 
  • Gefällt mir
Reaktionen: Paderman
Zurück
Oben