Header wurden bereits gesendet

Ghost2525

Grünschnabel
Hallo an alle PHP Coder

Ich bin hier im Forum eigentlich nicht sehr oft tätig gewesen bis jetzt. Habe aber jetzt ein
aktuelles Problem welches ich unbedingt lösen muss und einfach ned weiter weiss.

Auf meiner Seite http://www.bladedesign.info habe ich eine LOGIN BOX welche ich einerseits
über den INCLUDE Befehl probiert habe einzubinden und andererseits in dem ich den
ganzen CODE direkt in der index.php eingebunden habe. Jedesmal kommt der gleiche
Fehler, beim einbinden via INDCLUDE kommt er auf Zeile 46 + 47 und wenn ich den
ganzen CODE in der index.php einfüge kommt er dann einfach auf Zeile 428 + 429


Fehlermeldung nach klick auf Login:

Warning: Cannot modify header information - headers already sent by (output started at /home/www/web456/html/index.php:6) in /home/www/web456/html/index.php on line 428

Warning: Cannot modify header information - headers already sent by (output started at /home/www/web456/html/index.php:6) in /home/www/web456/html/index.php on line 429

Die beiden Fehlermeldungen oben beziehen sich im Script auf die beiden folgenden Zeilen:

setcookie("id", $user[id],time()+(60*60*24*5), "/", "");
setcookie("pass", $user[password],time()+(60*60*24*5), "/", "");

Ich hoffe das mir jemand helfen kann. Für mich ist PHP eigentlich noch NEULAND, denn
ich habe was PHP anbelangt noch nicht sehr gute Kenntnisse. Aber das was ich weiss
das kann ich auch umsetzen mit den richtigen Tools.

Mit freundlichen Grüssen

Didier Kugler
 

Anhänge

Du musst darauf achten, dass Du vor Funktionen wie setcookie(), header() und in der Regel auch session_start() keinerlei Ausgabe an den Browser schickst.
Du musst also entsprechende Aktionen (setzen eines Cookies, etc.) entweder so legen, dass sie vor jeder Ausgabe stattfinden oder aber mit dem Output Buffer arbeiten. Dazu setzt Du an den Anfang des Scripts den Befehl ob_start() und an's Ende den Befehl ob_end_flush().
Der letztere Weg ist zwar der einfachere, aber der erste ist der bessere.
 
Dennis Wronka hat gesagt.:
Du musst darauf achten, dass Du vor Funktionen wie setcookie(), header() und in der Regel auch session_start() keinerlei Ausgabe an den Browser schickst.
Du musst also entsprechende Aktionen (setzen eines Cookies, etc.) entweder so legen, dass sie vor jeder Ausgabe stattfinden oder aber mit dem Output Buffer arbeiten. Dazu setzt Du an den Anfang des Scripts den Befehl ob_start() und an's Ende den Befehl ob_end_flush().
Der letztere Weg ist zwar der einfachere, aber der erste ist der bessere.

Hi Dennis

Ich habe deinen Vorschlag mit oB_end_flush(); ( der Code wurde vor den Abschluss ?> gesetzt) . Ausprobiert bei beiden einbindungs Varianten und es kommen immer noch die gleichen Fehler. Ich habe Dir eine PM mit meiner ganzen Seite als ZIP zugestellt. Wenn Du Zeit und Lust hast währe ich froh wenn Du den restlichen Code mal anschauen könntest. Es kann sein das vielleicht an einem anderen Ort noch ein Fehler ist oder etwas was sich mit dem Code vom Script beisst.

Grüsse Didier
 
Du musst direkt nach dem <?php die Funktion ob_start(); setzen. Davor darf nichts mehr stehen an PHP- Code. Als letztes setzt du vor den beendenden ?>- Tag ob_end_flush(); .
Du musst allerdings auch aufpassen, wenn du die Variante wählst, dass du vor ob_start(); keine andere Datei mit z.B. include() einbettest. Oder du überprüfst, dass im Falle dessen, die eingebundene Datei keine Ausgabe startet.
 
So wie ich das sehe wird bei Dir auch alles in der index.php includet.
Dementsprechend rate ich Dir einfach mal das hier
PHP:
<?php
ob_start();
?>
ganz an den Anfang (also noch vor <!DOCTYPE ...) zu setzen und das hier
PHP:
<?php
ob_end_flush();
?>
ganz an's Ende (also hinter </html>).
 
Dennis Wronka hat gesagt.:
So wie ich das sehe wird bei Dir auch alles in der index.php includet.
Dementsprechend rate ich Dir einfach mal das hier
PHP:
<?php
ob_start();
?>
ganz an den Anfang (also noch vor <!DOCTYPE ...) zu setzen und das hier
PHP:
<?php
ob_end_flush();
?>
ganz an's Ende (also hinter </html>).

Hi Dennis

Du bist ein richtiger GOLDSCHATZ, es klappt jetzt wunderbar. In dem Fall ist die englishe
Tutorial Anleitung auf http://www.techtuts.com ned ganz korrekt. :rolleyes:

Grüsse

Didier Kugler
 
Aber Dennis, mal was anderes. Es ist doch eigentlich egal, wo genau die entsprechende ob_start(); Funktion steht im HTML- CODE. Das Dokument wird doch eh serverseitig verarbeitet. Und erst wird der PHP- Code verarbeitet, eh das HTML- Dokument an den Browser gesendet wird, oder hab ich einen Denkfehler?
 
Sobald etwas ausgegeben wird geht es zum Versand zurueck an den Web-Server und von dort in der Regel gleich zum Browser. Zuerst muessen zusaetzliche Header-Angaben zurueckgehen, denn sobald der Header einmal abgeschlossen ist kann kein zusaetzlicher Header mehr gesendet werden.
Sobald man irgendwas ausgibt was kein Header ist, ob nun <html> oder <!DOCTYPE ...> oder auch nur ein Leerzeichen gilt der Header als beendet und man ist beim Content angekommen.
 
An euch beide nochmals einen recht herzlichen Dank für die Prompte
Hilfeleistung. Wenn meine Seite fertig ist wird sie schon was her machen.

Inhalte meiner Seite :

Login Bereich
|_ Profil bearbeiten
|_ Memberliste
|_ Avatar bearbeiten
|_ PM System

und noch ein paar kleine Sachen mehr. Unteranderem wird es auch diverse
Tutorials auf meiner Seite geben und sofern ich ein gutes TutorialSystem
für den Einbau auf meiner Seite finde wird es das dann auch geben.
 
Zurück