meistens gehasster php-fehler :/

christz

Gesperrt
Hallo, ich habe meistens gehasster PHP-Fehler nachgeschaut und gelesen und ich verstehe das nicht, was es geschrieben meint:

Also ich habe PHP-Code Fehler:
Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/w00827ab/index.php:15) in /www/htdocs/w00827ab/index.php on line 84

Code von index.php soll aussehen:
PHP:
<html>

<head>
<title>habtra - habbo and trade mixed to be habtra. :]</title>
</head>

<body link="#FF0000" vlink="#FF0000" alink="#FFFF00">

<div align="center">
  <center>
  <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="850">
    <tr>
      <td width="25%">
      <font size="1" face="Verdana">
      <img border="0" src="images/habtralogo.gif" width="372" height="89"></font></td>
      <td width="75%">
      <div align="center">
        <center>
        <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="380" background="images/myhabtra.gif" height="90">
          <tr>
            <td width="100%">
            <table border="0" cellspacing="3" style="border-collapse: collapse" bordercolor="#111111" width="100%">
              <tr>
                <td width="100%">
                <p align="center">
                <img border="0" src="images/stern.gif" width="13" height="10"><b><font face="Verdana" size="1">Suchen&nbsp;
                </font></b>
                <img border="0" src="images/stern.gif" width="13" height="10"><b><font face="Verdana" size="1">Bieten&nbsp;
                </font></b>
                <img border="0" src="images/stern.gif" width="13" height="10"><b><font face="Verdana" size="1">eBay Verkaufsliste&nbsp;
                </font></b>
                <img border="0" src="images/stern.gif" width="13" height="10"><b><font face="Verdana" size="1">Team</font></b></td>
              </tr>
              <tr>
                <td width="100%">
                <form action="<? $PHP_SELF; ?>" method="post">
                <p align="center"><font face="Verdana" size="1">User:
                <input type="text" name="benutzername" size="10" style="font-size: 10px; font-family: Verdana; border: 1px solid #000000; background-color: #FFFFFF"> 
                Passwort:
                <input type="password" name="passwort" size="10" style="font-size: 10px; font-family: Verdana; border: 1px solid #000000; background-color: #FFFFFF"><font face="Verdana">
                </font>
                <input type="submit" value="Login" name="login" style="font-size: 10px; font-family: Verdana; color: #000000; border: 1px solid #000000; background-color: #FFFFFF; font-weight:bold">
<?
// Falls ein Fehler beim einloggen passiert kommt man hier hin...

if(isset($_GET["error"])) {
  echo "Login fehlgeschlagen!";
}

// Wenn man den Einloggen Button gedrückt hat wird dieser PHP teil ausgeführt...

if(isset($_POST["login"])) {

 // Ein paar Variabeln...
 
 $var_usr = $_POST["benutzername"];
 $var_pwd = $_POST["passwort"];
 $var_f = "benutzer/".$var_usr.".lif";
 
  // Wenn die Datei existiert soll er weitermachen...
  
  if(file_exists($var_f)) {
  
  // Jetzt wird die Datei in ein Array eingelesen...
  
    $check = array();
	$datei = fopen($var_f, "r");
	$lesen = fgets($datei, 1024);
	 array_push($check, $lesen);
	fclose($datei);
	
	$lif = explode("§§", $check[0]);
	
	// Checken ob die im Formular eingegebenen Daten mit denen aus der Datei übereinstimmen...
	
	if($var_usr == $lif[0] && md5($var_pwd) == $lif[1]) {
	
	  // Wenn alles richtig war bis jetzt werden die Daten aus der Datein in SessionVariabeln übergeben...
	  
	  $_SESSION["lif_benutzer"] = $lif[0];
	  $_SESSION["lif_passwort"] = $lif[1];
	  $_SESSION["lif_email"] = $lif[2];
	  // Nun wird man zur geschützten Seite verfrachtet...
	  header("Location:main.php");
	} else {
	  // Wenn die Daten nicht stimmen wird man zur Startseite zurückverfrachtet...
	  header("Location:index.php?error=1");
	}
  } else {
    // Wird ausgegeben wenn die .lif Datei des Benutzers nicht existiert...
    echo "Den Benutzer: <b>$var_usr</b> gibt es nicht!";
  }
}  
?>
                </font>
                </td>
              </tr>
              </table>
            </td>
          </tr>
        </table>
        </center>
      </div>
      </td>
    </tr>
  </table>
  </center>
</div>
<div align="center">
  <center>
  <br><br>
  <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="850">
    <tr>
      <td width="100%">&nbsp;</td>
    </tr>
  </table>
  </center>
</div>

</body>

</html>
 
Ja, ich weiß, ich hab sogar im Google gesucht und sogar gefunden, aber ich verstehe nicht, was geschrieben hat..

ich bin gehörlos und habe schwere Deutschkenntnisse.. :/
 
Gut, ich versuch’s dir zu erklären: Eine HTTP-Nachricht, also die Daten, die zwischen Webbrowser und Webserver verschickt werden, bestehen aus zwei Teilen: dem Header, in dem Informationen über den Body der Nachricht notiert sind (Inhaltstyp, Länge des Inhalts in Byte, Sprache, etc.) und dem Body, also der eigentlichen Nutzlast wie beispielsweise einem HTML-Dokument, dem Inhalt einer Grafikdatei etc.
Die Header-Informationen werden dabei erst einmal von PHP beziehungsweise dem Webserver gesammelt und sind noch so lange änderbar, bis die erste Ausgabe erfolgte, die dabei entweder explizit per echo/print aber auch implizit durch Zeichen vor oder nach einem einem PHP-Block („<?php … ?>“) geschehen. Dann werden zuerst die gesammelten Header-Informationen und danach die eigentliche Ausgabe als Body der HTTP-Nachricht geschickt. Wird dann versucht, die (bereits gesendeten) Header-Informationen zu ändern, wird genannte Fehlermeldung ausgespuckt.

In deinem Fall werden eine der beiden header()-Funktionsaufrufe, mit denen eine Weiterleitung bestimmt wird, den Fehler hervorrufen. Denn bereits das „<html>“ in der ersten Zeile sorgt dafür, dass die Header-Informationen gesendet werden und damit nicht mehr änderbar sind.

Abhilfe dabei kann entweder ein Änderung der Skriptstruktur schaffen, in dem beispielsweise erst alle Daten verarbeitet und erst danach ausgegeben werden. Oder mithilfe der Funktionen der Ausgabesteuerung, mit der die gesendeten Daten gepuffert werden können. Damit ist dann eine Änderung der Header-Informationen auch dann möglich, wenn die Ausgabe eigentlich bereits stattfand.
 
Danke vielmals, das du mich erklären versucht, ich hab jetzt einbisschen kapiert, besser als null Ahnung. Jetzt versuch ich mal das zu verbessern.
 
Zurück