Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „Warnmeldung: Cannot modify Header“

Foto-Delight

kleines Helferlein

Hey Ihr,
mittlerweile bin ich fast am verzweifeln.

Und zwar habe ich eine Index.php datei die mit Div's aufgebaut ist. Und in einer dieser Div's wird der Inhalt includet.

Wenn ich jetzt aber in so nem Inhalt ein Formular habe baut mir Dreamweaver diesen Code

PHP:
$updateGoTo = "index.php?cat=tracks";
  if (isset($_SERVER['QUERY_STRING'])) {
    $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
    $updateGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $updateGoTo));

leider kommt aber wenn ich auf den Button Submit drücke der Gleiche Inhalt nur mit der Fehlermeldung

:

Warning: Cannot modify header information - headers already sent by (output started at D:\Homepages\Bike-GPS\index2.php:13) in D:\Homepages\Bike-GPS\bearbeitung.php on line 53

hat jemand eine Idee/Ahnung wie man des ändern könnte?
Wär ziemlich wichtig für mich.
Ich hoffe ihr könnt mir Helfen
Danke schon mal im Vorraus
BRAINLESSSS
 

Refus

aka Noisy

AW: Warnmeldung: Cannot modify Header

vor einer header() funktion darf nichts stehen bzw. an den Browser geschickt werden. auch eine leere Zeile vor <?php kann hier schon zu Fehlern führen.
 

Refus

aka Noisy

AW: Warnmeldung: Cannot modify Header

Der Fehler sagt, dass die erste Ausgabe in Zeile 53 erfolgt, demnach ist dein Code Schnipsel nach dieser Zeile.
header() kann nur aufgerufen werden, wenn der header noch nicht abgeschickt wurde, also vom Browser interpretiert wurde.
 

Foto-Delight

kleines Helferlein

AW: Warnmeldung: Cannot modify Header

Aber da ich ja auf die seite in der der Fehler kommt mit index.php?cat=tracks verweiße kann ich den Fehler nicht umgehen, da ich ja schon einen definierten Header habe oder seh ich des falsch?
 
M

modr

Guest

AW: Warnmeldung: Cannot modify Header

Verstehe ich Dich richtig, dass der Header erst im include-file geschrieben wird? Dann darf bis dahin keine Ausgaben erforlgen.

Es würde helfen, wenn Du den ganzen QT bei einem NO PASTE service posten würdest und hier verlinken würdest. Oder reduziere Deinen Code auf das Minumum (so dass der Fehler aber noch auftaucht) und poste das hier.

Cheerio

Julian
 

Foto-Delight

kleines Helferlein

AW: Warnmeldung: Cannot modify Header

Nein also ich hab im index.php nen div und dort die abfrage
if( cat=1){
include_once('1.php')};
if(cat=2){
include_once('2.php');

also so in der art. Hab jetzt die Datei nicht vor mir. Vl auch mit anderen Klammern. Aber in die richtung gehts.

Und bei z.b 1.php verlinke ich auf die seite index.php?cat=2 mittels eines Formulars

Und dann erscheint der Fehler
 
M

modr

Guest

AW: Warnmeldung: Cannot modify Header

Also ich bleibe bei meiner Aussage. Ein wenig Source Code würde ungemein helfen.

Wenn Dein PHP-Code in einem DIV steht, dann wurde def. schon Content geschrieben und somit ist die Ausgabe eines Header unzulässig.

Also ein kleines Beispiel: (nicht getestet, suboptimal)

Code:
<?php 
if ($_GET["cat"]=="1") {
   include ... # im include darf kein Content geschrieben werden.
} elseif { ...
...
}
header (...);
?>
<html>
<head><title>...</title></head>
<body>
jetzt kommt erst der Inhalt der Seite
...
</html>

Alles klar?

Cheerio

Julian
 

Foto-Delight

kleines Helferlein

AW: Warnmeldung: Cannot modify Header

So also hier mal mein Code von index2.php ( nicht index.php da auf diese seite durch ein LoginScript verlinkt wird)

PHP:
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<div align="center">
	<div id="header"></div>
	<div id="navi">
	  <table width="100%" border="0" cellspacing="10">
        <tr>
          <th scope="col">&nbsp;<a href="index2.php?cat=1">Home</a></th>
          <th scope="col">&nbsp;<a href="index2.php?cat=picdel">Anleitung</a></th>
          <th scope="col">&nbsp;<a href="index2.php?cat=tracks">Routenauswahl</a></th>
          <th scope="col">&nbsp;<a href="index2.php?cat=trackup1">Track-Upload</a></th>
		  <th scope="col">&nbsp;<a href="index2.php?cat=gar">Garmin</a></th>
		  <th scope="col">&nbsp;<a href="index2.php?cat=tool">Tools</a></th>
		  <th scope="col">&nbsp;<a href="index2.php?cat=links">links</a></th>
		  <th scope="col">&nbsp;<a href="index2.php?cat=mod">*****</a></th>
        </tr>
      </table></div>
	<div id="content"><br>
	<?php
	$cat = $_GET['cat'];
	if($cat=='1'){
	include_once('1.php');
	}
	if($cat=='be'){
	include_once('beschreibung.php');
	}
	if($cat=='tracks'){
 	include_once('tracks.php');
	}
	if($cat=='trackup1'){
	include_once('up1.php');
	}
	if($cat=='trackup2'){
	include_once('up2.php');
	}
	if($cat=='trackup3'){
	include_once('up3.php');
	}
	if($cat=='gar'){
 	include_once('garmin.php');
	}	
	if($cat=='tool'){
 	include_once('tools.php');
	}
	if($cat=='mod'){
 	include_once('mod.php');
	}
	if($cat=='trackb'){
 	include_once('trackb.php');
	}
	if($cat=='no'){
 	include_once('norights.php');
	}
	if($cat=='picdel'){
 	include_once('bild-loeschen.php');
	}
	if($cat=='picbear'){
 	include_once('bildbearbeitung.php');
	}
	if($cat=='bildb2'){
 	include_once('bildbearbeitung2.php');
	}
	if($cat=='links'){
 	include_once('links.php');
	}
	if($cat=='bear'){
 	include_once('bearbeitung.php');
	}
	?>
</div>
	<div id="footer"></div>
</div>

</body>

Und hier mein Code von meinem Formular

PHP:
<?php

require_once('Connections/abfrage.php');
$id = $_GET['id'];


<?php 
require_once('Connections/abfrage.php');
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}


if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form2")) {
  $updateSQL = sprintf("UPDATE ovl SET Titel=%s, Weite=%s, Höhe=%s, Wer=%s, Gefahren=%s, Bemerkung=%s, Anfahrt=%s WHERE ID= '$id'",
                       GetSQLValueString($_POST[$Titel], "text"),
                       GetSQLValueString($_POST[$Weite], "text"),
                       GetSQLValueString($_POST[$Höhe], "text"),
                       GetSQLValueString($_POST[$Wer], "text"),
                       GetSQLValueString($_POST[$Gefahren], "text"),
                       GetSQLValueString($_POST[$Bemerkung], "text"),
					   GetSQLValueString($_POST[$Anfahrt], "text"),
                       GetSQLValueString($_POST[$ID], "int"));

  mysql_select_db($database_abfrage, $abfrage);
  $Result1 = mysql_query($updateSQL, $abfrage) or die(mysql_error());

  $updateGoTo = "index2.php?cat=tracks";
  if (isset($_SERVER['QUERY_STRING'])) {
    $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
    $updateGoTo .= $_SERVER['QUERY_STRING'];
  }
header(sprintf("Location: %s",$updateGoTo));
}


mysql_select_db($database_abfrage, $abfrage);
$query_anderungtracks = "SELECT ID, Titel, Weite, Höhe, Wer, Gefahren, Bemerkung, Anfahrt FROM ovl WHERE ID = '$id'";
$anderungtracks = mysql_query($query_anderungtracks, $abfrage) or die(mysql_error());
$row_anderungtracks = mysql_fetch_assoc($anderungtracks);
$totalRows_anderungtracks = mysql_num_rows($anderungtracks);
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
</head>

<body>
<form method="post" method="post" name="form2" action="bearbeitung2.php" enctype="multipart/form-data">
  <table align="center">
    <tr valign="baseline">
      <td nowrap align="right">Titel:</td>
      <td><input type="text" name="Titel" value="<?php echo $row_anderungtracks['Titel']; ?>" size="32"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Weite:</td>
      <td><input type="text" name="Weite" value="<?php echo $row_anderungtracks['Weite']; ?>" size="32"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Höhe:</td>
      <td><input type="text" name="Höhe" value="<?php echo $row_anderungtracks['Höhe']; ?>" size="32"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Wer:</td>
      <td><input type="text" name="Wer" value="<?php echo $row_anderungtracks['Wer']; ?>" size="32"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Gefahren:</td>
      <td><input type="text" name="Gefahren" value="<?php echo $row_anderungtracks['Gefahren']; ?>" size="32"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Bemerkung:</td>
      <td><input type="text" name="Bemerkung" value="<?php echo $row_anderungtracks['Bemerkung']; ?>" size="32"></td>
    </tr>
	 <tr valign="baseline">
      <td nowrap align="right">Anfahrt:</td>
      <td><input type="text" name="Anfahrt" value="<?php echo $row_anderungtracks['Anfahrt']; ?>" size="32"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">&nbsp;</td>
      <td><input type="submit" name="submit" value="Datensatz aktualisieren"></td>
    </tr>
  </table>
  <input type="hidden" name="ID" value="<?php echo $row_anderungtracks['ID']; ?>">
  <input type="hidden" name="MM_update" value="form2">
</form>
<p>&nbsp;</p>
</body>
</html>
<?php
mysql_free_result($anderungtracks);
?>

Ich hoffe ihr könnt mir weiterhin so helfen wie bis jetzt
 

CGE500

Noch nicht viel geschrieben

AW: Warnmeldung: Cannot modify Header

Du musst einfach darauf achten, dass kein Text/HTML-Code vor deiner header()-Funktion ausgegeben wird. Egal ob das mit echo oder mit print() passiert!
Das gleiche gilt auch für Text, der nicht von PHP ausgegeben wird, sondern ganz normal in der Datei vor dem <?php steht, genauso wie für Fehlermeldungen von PHP...

Zur besseren Verständlichkeit ein paar Beispiele:

PHP:
<?php
// Folgendes Beispiel löst deine Fehlermeldung aus!
echo 'foo'; // Wenn dieses echo nicht wäre, würde es funktionieren
header('Location: www.google.at');
?>
PHP:
<div>Test</div>
<?php
// Auch das löst eine Fehlermeldung aus, da diese Div-Box vorher ausgegeben
// wurde! Da könnte aber auch einfach nur ein Leerzeiche, oder ein Tab sein,
// und schon funktionierts nicht mehr!
header('Location: www.google.at');
?>
Wenn es aus irendeinem Grund nicht möglich ist, den header() vor der ersten Ausgabe aufzurufen, kann man seine Ausgaben auch einfach in einen Buffer schreiben lassen, und am Ende des Scripts ausgeben! Das geht dann so:

PHP:
<?php
ob_start(); // Startet den Buffer
echo 'blabubb'; // Schreibt 'blabubb' in den Buffer
ob_end_flush(); // Leert den Buffer und gibt ihn aus
?>
So, ich hoffe das war einigermaßen verständlich!^^

lg
 

blackout

Schaf im Wolfspelz

AW: Warnmeldung: Cannot modify Header

Das mit dem PHP-Header-Management kann für Anfänger etwas verwirrend sein. Eigentlich sieht eine über's HTTP versendete Datei immer so aus (CRLF steht für carriage return/line feed, also einen "Windows-Zeilenumbruch" -- das hat allerdings nichts mit Windows zu tun und in den HTTP-Konventionen so festgelegt):
Code:
header1: fooCRLF                       (Anfang des Headers)
header2: barCRLF
headerN: bazCRLF
CRLF                                  (Der Header wird durch eine Leerzeile beendet)
<!DOCTYPE ...>
<head xmlns="...">
...
PHP vereinfacht das Header-Management durch die Funktion header() dahingehend, dass man bereits gesetzte Header noch überschreiben kann, selbst wenn sie schon gesetzt wurden; außerdem muss man sich keine Sorgen machen, dass man einen Header doppelt sendet (es sei denn man möchte das).
Im HTTP-Header stehen gewisse Metadaten zu den unten angehängten Daten, z.B. um was für eine Datei es sich überhaupt handelt (HTML, Video, Text, ...) oder wann die Datei das letzte Mal geändert wurde.
Wenn du HTML-Seiten in anderen (nicht so mit Standardfunktionen vollgestopften wie PHP) Sprachen sendest/empfängst, wirst du den HTTP-Header manuell dazuschreiben müssen.
Code:
So sieht's in PHP aus:
header('content-type: text/plain'); // kümmert sich um die HTTP-Header
echo '<DOCTYPE ...>'; // das eigentliche Dokument

... und so in z.B. C++:
httpstream << "content-type: text/plain\r\n";
httpstream << "\r\n";
httpstream << "<DOCTYPE ...>";
/* httpstream ist "das, was gesendet wird", << der Verkettungsoperator (in PHP ist das der Punkt). Zeile 1 und 2 sind das, was in PHP mit header() gemacht wird, die letzte Zeile ist einem echo ziemlich ähnlich.
Was hier auffällt, ist dass hier im Gegensatz zu PHP alles an die selbe Stelle geschrieben wird -- alles in httpstream (die Verbindung zum Server o.ä.). */
So wie das C++-Beispiel arbeitet PHP auch intern, wie gesagt, header() ist nur eine Vereinfachung. Jetzt wird auch schnell klar, warum man vor der Ausgabe von irgendwas nichts in den Körper der Datei schreiben kann, das Ergebnis sieht dann nämlich so aus:
Code:
content-type: text/plainCRLF
<h1>Ernie und Bert spielen im Sandkasten</h1>LFconnection: keep-aliveCRLF
CRLF
...
Mit HTML kann das HTTP natürlich wenig anfangen. PHP bietet da immerhin eine Sicherheit -- es prüft, ob der HTTP-Header überhaupt Sinn macht, was dann zu der berüchtigten "Cannot modify header information"-Aussage führt.
Würde man das Beispiel übrigens per C++ an den Server schicken kämen diese Daten auch tatsächlich an und der Server müsste sich damit rumschlagen ;)
 

CIX88

Aktives Mitglied

AW: Warnmeldung: Cannot modify Header

PHP:
<?php

require_once('Connections/abfrage.php');
$id = $_GET['id'];


<?php

Ist das ein Tippfehler oder steht das wirklich so drin ?
Hinweis: Auch eine Fehlemeldung von PHP (z.B. parse-error oder die(mysql_error()) versucht Cannot modify header information.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Statistik des Forums

Themen
175.156
Beiträge
2.581.859
Mitglieder
67.223
Neuestes Mitglied
Desiree
Oben