[PHP] Login-Skript, include-Befehl und Fehler: headers already sent

Dieses Thema im Forum "Webentwicklung" wurde erstellt von joker.org, 28. August 2011 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 28. August 2011
    Login-Skript, include-Befehl und Fehler: headers already sent

    Hallo zusammen,

    ich habe ein Login-Skript programmiert bzw. angepasst, das mit einer mySQL-Datenbank übperüft ob ein Account existiert und ob das eingegebene Passwort stimmt.

    Das Skript möchte natürlich die Anmeldeinformationen für die Database.
    Diese habe ich jetzt, da ich diese öfters auch in anderen Dateien benötige in eine Datei geschrieben und jeweils mit include eingebunden.
    Das habe ich jetzt überall eingebunden und somit die manuellen Eingaben ersetzt.
    Nun bin ich an der login.php Datei angekommen und möchte dort das selbe einbinden.

    Jedoch kommt momentan ständig ein Fehler, dass der Header bereits gesendet wurde.
    Kann man das irgendwie so umgestalten, damit ich dort auch auf eine manuelle Eingabe verzichten kann?

    Bis jetzt habe ich immer require('verbindung.php') oder include('verbindung.php') getestet.

    Anbei der Code:

    PHP:
    <? php 
    // Session starten
    session_start  ();

    // Datenbankverbindung aufbauen 
    $connectionid  mysql_connect  ( "localhost" "root" "" ); 
    if (!
    mysql_select_db  ( "LoginSystem" $connectionid )) 

      die (
    "Keine Verbindung zur Datenbank" ); 


    $sql  "SELECT "
        
    "Id, Nickname, Nachname, Vorname "
      
    "FROM "
        
    "benutzerdaten "
      
    "WHERE "
        
    "(Nickname like '" . $_REQUEST [ "name" ]. "') AND "
        
    "(Kennwort = '" . md5  ( $_REQUEST [ "pwd" ]). "')"
    $result  mysql_query  ( $sql ); 

    if (
    mysql_num_rows  ( $result ) >  0

      
    // Benutzerdaten in ein Array auslesen. 
      
    $data  mysql_fetch_array  ( $result ); 

      
    // Sessionvariablen erstellen und registrieren 
      
    $_SESSION [ "user_id" ] =  $data [ "Id" ]; 
      
    $_SESSION [ "user_nickname" ] =  $data [ "Nickname" ]; 
      
    $_SESSION [ "user_nachname" ] =  $data [ "Nachname" ]; 
      
    $_SESSION [ "user_vorname" ] =  $data [ "Vorname" ]; 

      
    header  ( "Location: intern.php" ); 

    else 

      
    header  ( "Location: formular.php?fehler=1" ); 

    ?> 
    Vielen Dank im Voraus.

    Gruß joker.org
     
  2. 28. August 2011
    AW: Login-Skript, include-Befehl und Fehler: headers already sent

    Das hängt wohl mit "session_star" zusammen, das muss aufgerufen werden, bevor es zu einer Ausgabe kommt.

    Ist nen Stadardfehler, den man auch schnell bei Google findet.
    Lösung: session_start bei deinem entry-script in die erste Zeile packen.

    PHP: session_start - Manual
    siehe den Hinweis weiter unten.
     
  3. 28. August 2011
    AW: Login-Skript, include-Befehl und Fehler: headers already sent

    Hast eventuell ein "unsichtbares" Zeichen vor deinem <?php.
    Am besten mal mit nem Hex Editor nachschaun und es gegebenfalls entfernen.
    Das passiert meistens wenn man im falschen Zeichensatz abspeichert.
     
  4. 28. August 2011
    AW: Login-Skript, include-Befehl und Fehler: headers already sent

    Gibt da doch auch noch so eine Funktion, dass php alles erstmal puffert und dann sendet oder so? Hab da eher nicht so die Ahnung, aber ich erinnere mich daran das ich sowas auch hatte und es damit dann damals ging.
    ob_start() musste man da irgendwie benutzen
     
  5. 29. August 2011
    AW: Login-Skript, include-Befehl und Fehler: headers already sent

    ob_start(); muss rein.
     
  6. 29. August 2011
    AW: Login-Skript, include-Befehl und Fehler: headers already sent

    Hi,
    danke für eure Antworten.
    Wo muss das genau hin?
    Und wofür ist das dann gut?

    Danke.

    Gruß joker.org
     
  7. 29. August 2011
    AW: Login-Skript, include-Befehl und Fehler: headers already sent

    PHP: ob_start - Manual

    An den Anfang der Seite (vor jeden Print, Echo-Befehl).
     
  8. 30. August 2011
    AW: Login-Skript, include-Befehl und Fehler: headers already sent

    Kodierung umstellen auf UTF-8 ohne BOM (Notepad++)
     
  9. 31. August 2011
    AW: Login-Skript, include-Befehl und Fehler: headers already sent

    Ob_Start() ist nicht notwendig, die Ausgabepufferung startet von selbst. Man kann Sie manuell stoppen oder löschen, aber explizit starten ist nicht notwendig!

    Ich gehe ebenfalls davon aus, dass es sich um einen Kodierungsfehler handelt, gerade auf Windows-Systemen nimmt PHP das gern mal ernst und stellt sich etwas an! Hatte ich selbst schon oft gehabt!


    Gruß Blackb!rd
     
  10. 31. August 2011
    AW: Login-Skript, include-Befehl und Fehler: headers already sent

    Hallo zusammen,

    vielen Dank für eure Antworten.
    Es war wohl beides.
    Es war die falsche Zeichenkodierung und außerdem noch ein Leerzeichen am Ende der Datei.

    Vielen Dank.

    Gruß joker.org
     
  11. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.