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

Fehlersuche

Status
Für weitere Antworten geschlossen.

farchris

Mitglied
Hallo,
wenn ich das Gästebuch, also die guestbox.php vom Gästebuch in eine andere Datei include:
Code:
<?PHP
 include("guestbox.php");
?>

dann kommt der Fehler, das die Datei schon gesendet wurde:

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/www/web0/html/GB/menu.php:4) in /home/www/web0/html/GB/gb_config.php on line 35

Warning: Cannot modify header information - headers already sent by (output started at /home/www/web0/html/GB/menu.php:4) in /home/www/web0/html/GB/guestbox.php on line 19

In der gb.php wurde die guestbook.php geincluded.
Desweiteren wird die menu.php für das Style und der Navi ebenfalls geincluded.
Hier mal die gb.txt und die menu.txt und dazu noch die gb_config.txt
http://www.comuse.org/gb.txt
http://www.comuse.org/menu.txt
http://www.comuse.org/gb_config.txt

Ich hoffe ihr könnt mir helfen:
Hier noch der Link zum GB:
http://www.comuse.org/GB/gb.php
 
Werbung:
Was ist mit der guestbook.php? wenn ich die fehler richtig interpretiere dann liegt es an einer ungültig gestarteten session und da sonst nirgends eine session geöffnet wird muss es inder ablaufen.

zusätzlich:
-> in css bekommen alle werte einheiten sonst ist es ungültig!
-> lagere das css aus!

Es gibt hier im forum auch kategorien! MOVED: PHP
 
/home/www/web0/html/GB/menu.php:4) in /home/www/web0/html/GB/guestbox.php on line 19
Das sagt dir, dass du da keine Cookie, bzw den header nicht ändern kannst, weil du in der Datei in zeile 19 schon mit der Ausgabe begonnen hast.
Selbiges bei dem anderem Fehler.
 
Werbung:
eine session muss vor dem versenden des 1. htmltags gestartet werden. darum solltest du solches nie in includes versuchen (da es meistens einfach unmöglich ist).

mfg, fätzminator
 
Ich will ja nichts sagen aber bei meiner momentanen website (die ja immernoch in arbeit ist) wird die 'init.php' (in der die session usw. gestartet wird) erst nach dem doctype eingebunden das heißt nachdem dieser versandt wurde. und bei mir kommen deswegen keine fehler...
 
komisch...
dann ist es halt ab dem <html> tag, aber ich kenne das problem selbst...
und warum includest du diesen erst dann? bei mir kommt der im durchschnitt erst in der mitte der head-datei :wink:
 
Werbung:
Weil ich in der 'init.php' alle Initialisiere und die Session staert und sonst was noch alles. Warum ich es erst mach dme doctype mache weiß ich auch nicht so genau kommt mir beim ablauf logsiche vor... :lol:
 
Hallo zusammen,

eine Session muss vor jeglicher Ausgabe (HTML, Doctype, Leerzeichen, egal was) gestartet werden. Das liegt daran, dass die Session z.T. HTTP-Header ändert. Wenn schon eine Ausgabe stattgefunden hat, dann schickt der Webserver die HTTP-Header weg, um danach die Ausgabe abschicken zu können. Eine später gestartete Session kann die Header dann nicht mehr ändern und quitiert das mit einer Fehlermeldung.

Um das Problem zu umgehen, kann man mit ob_start die Ausgabepufferung aktivieren. Dann speichert PHP jede Ausgabe zwischen, verschickt also auch noch keine HTTP-Header. Eine Session kann dann also nach einem echo oder sonstwas kommen. @Prophet: Evtl. hast Du das ja aktiviert.

Ausgabepufferung kann auch die Geschwindigkeit der Seiten erhöhen, da mit einem mal größere Pakete verschickt werden. Also: auf jeder Seite ganz am Anfang ein ob_start.

Viele Grüße,
charlie07
 
Werbung:
Bei mir ist es so das der Doctype ganz normalam anfang steht und dan die init.php ausgeführt wird...
 
kann nicht sein. der doctype gehoert zum body (von http aus gesehen)
Code:
*header zeilen*
*leerzeile*
*body (beginnend mit "<!DOCTYPE ....")*
d.h. wenn doctype ausgegeben wurde sind alle header gesendet und koennen nicht mehr rueckgaengig gemacht werden.
(arbeitest du mit dynamischem caching?)
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben