headers already sent bei include() - Lösung?

marvinlol

Erfahrenes Mitglied
Hallo zusammen.

Ich habe eine index.php.
Sie stellt das gesammte Layout dar.
Per include() werden dann die php Module in den Inhalt geladen.
Wenn ich jetzt aber nach Ausführung eines Scripts per
Code:
header("Location: startseite.php")
auf eine andere Seite weiterleiten will, bekomme ich die bekannte headers already sent Fehlermeldung.

Ich weiß auch, warum dieser Fehler entsteht, doch habe ich leider keine Lösung parat.
Ich muss ja schließlich etwas in der index.php ausgeben.

Hat jemand eine Lösung für mein Problem ?
 
Bitte beim nächsten mal besser suchen. Dieses Thema gab es geschätzt über 250.000 mal im Internet.

Und weil das im Internet so oft ist hier ein Link zur Antwort:
http://www.php-fehlermeldungen.de/topicmenu1/index2.html

Zitat von php-fehlermeldungen.de
Bei einigen Webauftritten ist es aber auch der Aufbau bzw. die Struktur der Seite, die die Verwendung von der header() Funktion unmöglich macht. Manche Webauftritte haben ihre Dateien so verschachtelt mit include() das vor den eigentlichen PHP Code jedesmal schon HMTL gesendet wird.

Genau das ist bei mir ja der fall.
Wie genau funktioniert das denn genau mit dem ob_start ?

oder hat jemand eine andere idee ?
 
Wie genau funktioniert das denn genau mit dem ob_start ?

Du machst folgendes deine index.php ganz am anfang
ob_start(); # cachen beginnt
und am ende der index datei

ob_end_flush (); Cache wird ausgeben und gelöscht.

http://at.php.net/manual/de/function.ob-end-flush.php

Beispiel
PHP:
<?
ob_start();  #cachen beginnt 
echo" text";  # es folgt keine ausgabe da gecacht wird !
header("Location: startseite.php") # Umleitung funktioniert nun da keine ausgabe erfolgt ist.

ob_end_flush ();  # Cache wird ausgeben und gelöscht

Mfg Splasch
 
Zuletzt bearbeitet:
Nein cachen kann nur Vorteile haben das es eben schneller geht.
Nachteil entuell das der Server ein paar kb mehr Ram Speicher benötigt.

Mfg Splasch
 
http://www.php-fehlermeldungen.de/topic24.html hat gesagt.:
Bei einigen Webauftritten ist es aber auch der Aufbau bzw. die Struktur der Seite, die die Verwendung von der header() Funktion unmöglich macht. Manche Webauftritte haben ihre Dateien so verschachtelt mit include() das vor den eigentlichen PHP Code jedesmal schon HMTL gesendet wird.

Da steht, dass du vor irgendeinem include bereits ein echo oder ähnliche Ausgaben stehen hast und dir die Fehlersuche durch "Verschachtelung" von include() erschwert hast ;)

Wäre weiterhin gut wenn du den Fehler irgendwann siehst, da du sonst unnötigen Traffic produzierst.
 
Zurück