• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Re-Direct mit PHP

Tronjer

Senior HTML'ler
Ich stand heute vor dem Problem, eine Webeite nach einigen Sekunden auf eine andere weiterzuleiten. Leider funktioniert

PHP:
header('refresh:5; url=example.com');
nicht, wenn der Code über eine inkludierte PHP-Seite eingebunden wird und dadurch irgendwo im Body landet. Letztendlich habe ich es dann mit Javascript lösen müssen.

Gibt es eine Alternative zu der oben genannten Funktion?
 
wenn der Code über eine inkludierte PHP-Seite eingebunden wird und dadurch irgendwo im Body landet

Du kannst einen Meta refresh einbauen. Ich habe mal zufällig entdeckt, das es auch geht wenn der Meta-Tag statt im header im Body auftaucht.
Ist zwar gegen jegliche Regeln und der Validator wird rot dabei aber funktioniert perfekt in jedem Browser.
<body>
<p> irgendwas</p>
<meta http-equiv="refresh" content="5; URL=http://de.selfhtml.org/">
</body>

leitet nach 5 Sekunden weiter auf Selfhtml.
 
Oder das EVA-Prinzip (Reihenfolge: Eingabe, Verarbeitung, Ausgabe) beachten und erst mit den Ausgaben beginnen, wenn die Verarbeitung abgeschlossen ist.

Ich weiß, das ist manchmal leichter gesagt als getan und auch nicht ganz einfach zu erklären, aber es ist dennoch die beste Empfehlung.
 
Im Zweifel sollte auch der Outputbuffer helfen.
ob_start(); an den Anfang deines Codes, aber, falls vorhanden, erst nach session_start();
 
Du kannst einen Meta refresh einbauen. Ich habe mal zufällig entdeckt, das es auch geht wenn der Meta-Tag statt im header im Body auftaucht.
Ist zwar gegen jegliche Regeln und der Validator wird rot dabei aber funktioniert perfekt in jedem Browser.
<body>
<p> irgendwas</p>
<meta http-equiv="refresh" content="5; URL=http://de.selfhtml.org/">
</body>

leitet nach 5 Sekunden weiter auf Selfhtml.

Danke für den Tipp.

EVA geht leider nicht. Ich habe weder Zugriff auf den Head, noch auf das <body> Tag.
 
Theoretisch:
PHP:
sleep(5);
header("Location: url");

Siehe: PHP: sleep - Manual

Nachteil: es gibt keine Ausgabe, aber die Weiterleitung erfolgt nach 5 Sekunden.

Alternative:
JavaScript-Weiterleitung:
Code:
window.setTimeout("location.href=url", 5000);

Nachteil: müsste nach dem kompletten Laden der Seite geladen werden.
 
Ich habe auch setTimeout() verwendet, weil mir nichts anderes einfiel. Aber sleep() wäre natürlich eine kreative Möglichkeit gewesen, um das Problem zu lösen.
 
Wobei sich da die Frage stellt, worin dein Problem besteht. Einfach mal so alles um 5 Sekunden zu verzögern, ohne dem Nutzer während dieser Zeit irgendeine Ausgabe zu liefern, ist schon etwas speziell.
 
Zurück
Oben