Ich stand heute vor dem Problem, eine Webeite nach einigen Sekunden auf eine andere weiterzuleiten. Leider funktioniert
[PHP]header(‚refresh:5; url=example.com‘);[/PHP]
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.
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.
[FONT=Courier New]ob_start();[/FONT] an den Anfang deines Codes, aber, falls vorhanden, erst nach [FONT=Courier New]session_start();[/FONT]
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.