ein letztes mal: header sent...

silent321

Grünschnabel
hi,

sicherlich kennt ihr alle diese doofen fehler:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at...

Warning: Cannot modify header information - headers already sent by (output started at...


ich vertstehe immernochnicht in welchem fall und warum die fehlermeldungen ausgegeben werde wo sie doch auf eine forumularstelle hinweisen (bei mir index.php irgendwo ganz am anfang wo überhaupt kein code steht)

also hab ich mir mal die headers ausgeben lassen

PHP:
 $headers = getallheaders();
foreach ($headers as $name => $content) {
echo "headers[$name] = $content\n";
echo "<br>";}

und da kahm das bei raus:

headers[User-Agent] = Opera/9.02 (Windows NT 5.1; U; de)
headers[Host] = localhost
headers[Accept] = text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
headers[Accept-Language] = de-DE,de;q=0.9,en;q=0.8
headers[Accept-Charset] = iso-8859-1, utf-8, utf-16, *;q=0.1
headers[Accept-Encoding] = deflate, gzip, x-gzip, identity, *;q=0
headers[Cookie] = PHPSESSID=12c8e9bccab3328dffc59d4a5270479f
headers[Cookie2] = $Version=1
headers[Pragma] = no-cache
headers[Cache-Control] = no-cache
headers[Connection] = Keep-Alive, TE
headers[TE] = deflate, gzip, chunked, identity, trailers


:eek: so viel informationen sind über den header gesendet worden

kein wunder das header schonmal gesendet wurde oder hab ich ein denkfehler?
würde mich freuen wenn mir jemand erklären könnte wie ich das problem lösen kann...
 
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at...
Kommt dann, wenn eine Fehlermeldung generiert wurde und bereits im Browser steht.
Bei PHP ist das so, dass erst Fehler an den Browser gesendet werden, und erst, wenn alles ok ist, kann ein anderer header gesendet werden.
Wenn also zB ein Fehler an den Browser gesendet wurde, und du in deinem Script jedoch eine Session startest oder einen anderen header mit "header("location: http://www....")" sendest, kann DEIN header natürlich nicht mehr gesendet werden, da ja schon einer verschickt wurde und im browser angekommen ist.

also, ist es ratsam, mal zu sehen, ob nicht eine Fehlermeldung an den Browser gesendet wurde, bevor der fehler mit "session_start()" kam. Evtl. steht auch noch ein anderer Fehler unter deinem geposteten, der dir unwichtig erschien ?

Eine weitere Fehlerquelle:
Du gibst eine Zeichenkette an den Browser aus, und startest DANACH eine session, auch das geht nicht. Achte also darauf, dass nix zum Browser als Zeichenkette gesendet wird, BEVOR du eine session startest oder einen header mit header() sendest.
Um zeichenausgaben an den Browser durch funktionen zu unterbinden, kannst du auch ein "@" (ohne anführungszeichen) vor den Funktionsaufruf stellen.

LG
Andy
 
Zurück