Und wieder ist eine session schuld

Eiszwerg

Erfahrenes Mitglied
Folgende Fehlermeldung:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/www/htdocs/my-zwerg.de/tagebuch/home.php:1) in /home/www/htdocs/my-zwerg.de/tagebuch/checkuser.php on line 3

checkuser.php:
PHP:
<?php 
ob_start (); 
session_start (); 
if (!session_is_registered ("user_id")) 
{ 
  header ("Location: formular.php"); 
} 
ob_end_flush (); 
?>

Weiss jemand Rat? Mal kommt der Fehler und mal nicht... Total ominös..

Gruss ICEzW3RG
 
Na, vielleicht solltest du dir mal die Datei

/home/www/htdocs/my-zwerg.de/tagebuch/home.php

anschauen. Da wird offenbar irgendwas gesendet, dass verhindert, dass weitere Header gesendet werden können.

Das kann alles, jedes echo, oder auch nur eine Leerzeile, ein Kommentar oder sonstwas z. B. vor <? PHP sein.
 
Schlagt mich, wenn ihr wollt, aber ich poste mal die home.php

PHP:
<html>
<head>
</head>
<span style="font-family:Verdana">
<body>
<?
if ($seite=="" || $seite=="start"){
include("start.php");}
elseif ($seite=="einloggen"){
include("einloggen.php");}
elseif ($seite=="intern"){
include("intern.php");}
elseif ($seite=="logout"){
include("logout.php");}
elseif ($seite=="anmelden"){
include("anmelden.php");}
elseif ($seite=="register"){
include("register.php");}
elseif ($seite=="neueintrag"){
include("neueintrag.php");}
elseif ($seite=="liste"){
include("liste.php");}
elseif ($seite=="edit"){
include("edit.php");}
elseif ($seite=="delete"){
include("delete.php");}
elseif ($seite=="farben"){
include("color.php");}
elseif ($seite=="user"){
include("user.php");}
elseif ($seite=="wasist"){
include("wasist.php");}
elseif ($seite=="stimmen"){
include("stimmen.php");}
elseif ($seite=="hilfe"){
include("hilfe.php");}
elseif($seite=="mailer"){
include("mailer.php");}
?>
</span>
</body>
</html>

Hat jemand eine Idee dazu?
 
Habe eben den ganzen HTML-Code weggenommen und siehe da:

ES GEHT!

Mag mir einer erklären, was ich denn da nun nicht verstanden habe?
Warum stört der Code?

Danke an alle Beteiligten!
 
Warum kann Ich dir nicht sagen, nur soviel:
Sessions und Cookies können nur Gestartet/Gesetzt werden, wenn vorher noch KEIN anderer Code kommt!
PHP:
<? session_start(); ?>
<html>
<head>
</head>
<span style="font-family:Verdana">
<body>
<?
if ($seite=="" || $seite=="start"){
include("start.php");}
elseif ($seite=="einloggen"){
include("einloggen.php");}
elseif ($seite=="intern"){
include("intern.php");}
elseif ($seite=="logout"){
include("logout.php");}
elseif ($seite=="anmelden"){
include("anmelden.php");}
elseif ($seite=="register"){
include("register.php");}
elseif ($seite=="neueintrag"){
include("neueintrag.php");}
elseif ($seite=="liste"){
include("liste.php");}
elseif ($seite=="edit"){
include("edit.php");}
elseif ($seite=="delete"){
include("delete.php");}
elseif ($seite=="farben"){
include("color.php");}
elseif ($seite=="user"){
include("user.php");}
elseif ($seite=="wasist"){
include("wasist.php");}
elseif ($seite=="stimmen"){
include("stimmen.php");}
elseif ($seite=="hilfe"){
include("hilfe.php");}
elseif($seite=="mailer"){
include("mailer.php");}
?>
</span>
</body>
</html>
sop müsste es hier aussehen!
 
Ich kann das SESSION / Cookie-Problem aber erklären:
Cookies werden grundsätzlich über Header-Befehle gesendet!
Hier mal ein Cookie-Header:
Set-Cookie: 3f3=d41d8cd98f00b204e9800998ecf8427e; expires=Wed, 13-Oct-04 22:25:44 GMT

Und da Header nunmal nicht nach dem Inhalt gesendet werden können (die sind ja schließlich dazu da, den Inhalt oder die Verbindung (oder sonstwas) zu beschreiben, müssen die vor dem Inhalt gesendet werden.

Und bei Sessions ist es nunmal das Problem, dass Session-IDs meistens per Cookie gesendet werden.
 
Zurück