Headers already sent by

Hi

Ja, ich habe heute unglaublich viele Probleme :ps:
Ich bin mir sicher, jeder der einigermaßen was mit php zu tun,
kennt diese Meldung hier:

headers already sent by (output started at [...])

Ich habe mir dazu einiger durchgelesen und habe auch die Fehlerursache
verstanden. Sobald nur ein Funken HTML ausgegeben wurde, kann der
Header nicht mehr modifiziert werden. Das stellt sich bei mir aber als sehr
problematisch da. Folgende Umstände führen mich zu der Fehlermeldung:
Ich habe ein Login-Script, dass mit Sessions arbeitet:

<?php
include("config.php");
session_start();
$Benutzername = $_POST['Benutzername'];
$Passwort = $_POST['Passwort'];
if (!isset($_POST['Benutzername']) or !isset($_POST['Passwort'])) {
if (!isset($_SESSION['login'])) {
echo '
   <form method="POST">
   Benutzername:<br><input type="text" size="15" name="Benutzername"><br>
   Passwort:<br><input type="password" size="15" name="Passwort"><br>
   <input type="submit" size="10" value="Login">
</form>';
}
elseif (isset($_SESSION['login'])) {
echo 'Hier kann Inhalt rein, der erscheint, wenn der Benutzer eingeloggt ist';
}
}
elseif (isset($_POST['Benutzername']) && isset($_POST['Passwort'])) {
//Verbindung aufbauen
$db = mysql_connect($host, $dbuser, $dbpass);
mysql_select_db($dbname,$db);
//Das Passwort zum User auslesen
$sql = "SELECT 1 FROM User WHERE Username = '$Benutzername' AND Passwort = '$Passwort';";
$query = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($query)) {
$_SESSION['login'] = 1;
echo "Du wurdest erfolgreich eingeloggt!";
}
else {
echo "Es wurden falsche Daten eingegeben!";
}
}
?>

Und ich habe ein Design, in das dieses Script irgendwann inkludiert wird:

<html>
<head></head>
<body>
[...]
<div id="box">
<?php
include('login.php');
?>
</div>
[...]
</body>
</html>

Ich könnte das Login-Script an den Anfang setzen, aber dann wäre es ja ganz
oben und ich möchte es in das Template reinbekommen, undzwar ohne Fehlermeldung.
Ich habe auch irgendwas von ob_start(); gelesen, aber das check ich nicht ganz.
Ich hoffe mir kann jemand helfen und erklären, wie ich mein Problem löse :wink:

Gruß,
TrekWork

P.S.:Wer das ganze mal in Aktion sehen will: trekwork.bplaced.net/php/loginsystem/demo/

Setz das “session_start();” mal in die zweite (direkt nach <?php) Zeile, dann sollte es klappen :wink: Der Befehl darf nicht vor einem “echo”, “print_f” oder sonstigen Ausgabe-Funktionen stehen, auch nicht irgendwo nach einer HTML-Ausgabe :wink: Also immer am Anfang.

Starte die Session halt vorher?

#[size=85]edit:[/size] Mist, ich wurde geninjat.

Häh, wie? Das ganze hängt nur von session_start() ab?
Oder auch von $_SESSION[‘login’] = 1;?

Steht das in Zeile 3? Nein, also. Du müsstest dafür sorgen, dass session_start() vor irgendeiner Ausgabe aufgerufen wird, also in das zweite Script kopieren.

Juuhuu es funktioniert !haue
Danke!!