david: Fehler in Session-Befehl?

Hallo,

das hier ist ein Auszug aus meinem Script:

16 session_start();
17 include ("include_sqlconnect.php"); //Verbindung zur SQL-DB
18 $abfrage = "SELECT * FROM login WHERE name='$benutzername' AND pass='$pass'";
19 $ergebnis = mysql_query($abfrage);}
20 if (mysql_num_rows($ergebnis)==1)
21 { $wert = mysql_fetch_array($ergebnis);
22 $id = $wert[0];
23 $level=$wert[3];
24 session_register("id","level");
25 header ("Location: menu.php");
26 } else {
27 echo "Login fehlgeschlagen";

und ich bekomme immer folgende Fehlermeldung, wenn ich mich versuche einzuloggen:

Warning: Cannot send session cookie - headers already sent by (output started at site_login_auth.php:6) in site_login_auth.php on line 16

Warning: Cannot send session cache limiter - headers already sent (output started at site_login_auth.php:6) in site_login_auth.php on line 16

In der Line16 steht doch nur der session_start() Befehl. Was ist daran falsch?

  1. Hallo,

    Warning: Cannot send session cookie - headers already sent by (output started at site_login_auth.php:6) in site_login_auth.php on line 16

    Warning: Cannot send session cache limiter - headers already sent (output started at site_login_auth.php:6) in site_login_auth.php on line 16

    In der Line16 steht doch nur der session_start() Befehl. Was ist daran falsch?

    Daran ist nichts falsch. Die Fehlermeldung sagt nur, dass der die Cookies nicht senden konnte. Diese kann er nicht senden, wenn er den Header schon abgeschlossen hat (d.h. Teile der Seite gesendet hat) Cookies können nämlich nur im Header verschickt werden und der wird abgeschlossen, sobald Nutzdaten ausgegeben werden.

    (output started at site_login_auth.php:6)

    Dieser Teil der Meldung sagt Dir, dass in der Zeile 6 der Datei site_login_auth.php die Ausgabe von Nutzdaten schon gestartet wurde. _Jegliche_ ausgabe muss _auf jeden Fall_ nach Anweisungen, die auch nur evtl. etwas an den Header anfügen könnten, passieren.

    Grüße,

    Christian

    1. Dieser Teil der Meldung sagt Dir, dass in der Zeile 6 der Datei site_login_auth.php die Ausgabe von Nutzdaten schon gestartet wurde. _Jegliche_ ausgabe muss _auf jeden Fall_ nach Anweisungen, die auch nur evtl. etwas an den Header anfügen könnten, passieren.

      Und was tue ich nun, um das zu beheben? In Zeile 6 war nur eine Stylesheet-Anweisung...

      1. Hallo,     <!--  </faq/#Q-05a>  //-->

        Und was tue ich nun, um das zu beheben? In Zeile 6 war nur eine Stylesheet-Anweisung...

        Ja klar. Die Stylesheet-Anweisung ist ja eine Ausgabe (du weist ja den Browser an und nicht PHP)

        Grundsätzlich ist so eine Struktur zu befolgen:

        --------- datei.php -------
        <?
          includes ....
          session_start ();
          sonstige anweisungen, die cookies oder header setzen
          sonstiges ...
        ?>
        <!DOCTYPE ..... >
        <html>
        ....
        </html>
        ---------------------------

        Grüße,     <!--  </faq/#Q-05c>  //-->

        Christian