Cannot modify header information
Devous
- php
0 dedlfix0 dedlfix
0 Der Martin
Moin Moin,
ich habe in dem Quelltext irgendwo einen "Cannot modify header information" Fehler. Nach ein bisschen googlen sollte irgendwo ein Leerzeichen vor oder nach einem PHP Tag sein. Habe ihn aber noch nicht gefunden. So langsam bin ich ratlos und hoffe das mir hier jemand helfen kann.
Der komplette Fehlercode:
Warning: Cannot modify header information - headers already sent by (output started at H:\xampp\htdocs\balzer\admin\aenderung\email.php:50) in H:\xampp\htdocs\balzer\admin\aenderung\email.php on line 101
Schon einmal danke für eure hoffentliche Hilfe!
Gruß
<?php
session_start();
if (empty($_SESSION['Nutzer'])) {
header('Location: ../../public/nicht_eingeloggt.php');
}
?>
<html>
<head>
<title>Fast Food - EMail Ändern</title>
<meta charset="ANSI">
<link rel="stylesheet" href="../../css/design.css" type="text/css" />
<link rel="stylesheet" href="../../themes/default/default.css" type="text/css" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js" type="text/javascript"></script>
<script src="../../data/jquery.nivo.slider.pack.js" type="text/javascript"></script>
<script type="text/javascript">
$(window).load(function() {
$('#slider').nivoSlider({
controlNav: false, // 1,2,3... navigation
});
});
</script>
</head>
<body>
<div id='statusbar'>
<?php
include("../../data/menu_status_admin.php");
?>
</div>
<div id="website">
<div class="slider-wrapper theme-default">
<div class="ribbon"></div>
<div id="slider" class="nivoSlider">
<img src="../../images/slide1.jpg" alt="" />
<a href="http://dev7studios.com"><img src="../../images/slide2.jpg" alt="" title="#htmlcaption" /></a>
<img src="../../images/slide3.jpg" alt="" title="This is an example of a caption" />
<img src="../../images/slide4.jpg" alt="" />
</div>
<div id="htmlcaption" class="nivo-html-caption">
<strong>This</strong> is an example of a <em>HTML</em> caption with <a href="#">a link</a>.
</div>
</div>
<div id="main">
<div id="menu" >
<?php
include("../../data/menu_admin.html");
?>
</div>
<div id="inhalt">
<h2><center>Ändern Sie hier Ihre E-Mail:</center></h2>
<Form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
<center><table>
<tr><td>Ihre alte E-Mail: </td><td><input type="text" name="emailalt" size="16"></td></tr>
<tr><td>Ihre neue E-Mail: </td><td><input type="text" name="emailneu" size="16"></td></tr>
<tr><td>Wiederholen Sie die E-Mail: </td><td><input type="text" name="emailneu2" size="16"></td></tr>
</table></center><br>
<input type="submit" name="gesendet" value="Ändern"></center>
<?php
If (isset($_POST['gesendet'])) {
$emailalt = $_POST['emailalt'];
$emailneu = $_POST['emailneu'];
$emailneu2 = $_POST['emailneu2'];
include("../../data/config.php");
if ($emailalt == "" or $emailneu == "" or $emailneu2 == "") {
echo "<center>Bitte fülle alle Felder aus.</center>";
}
$Name = $_SESSION['Nutzer'];
$query = sprintf("Select * from account where nickname = '%s'", $Name);
$ergebnis = mysql_query($query, $verbindung);
if (mysql_num_rows($ergebnis) == 0) {
die("<center><h2>Dieser Account exestiert nicht");
}
while ($zeile = mysql_fetch_array($ergebnis, MYSQL_ASSOC)) {
$emaildb = $zeile['email'];
}
if ($emailalt != $emaildb) {
die("<center><h2>Die eingegebene bisherige E-Mail ist falsch!</h2></center>");
}
if ($emailneu != $emailneu2) {
die("<center><h2>Bitte überprüfen Sie die Eingabe der neuen E-Mail!</h2></center>");
}
if ($emailneu == $emailalt) {
die("<center><h2>Wälen Sie ein neues Passwort, welches nicht identisch mit dem alten ist.</h2></center>");
}
$query = sprintf("UPDATE account
SET email='%s'
WHERE nickname='%s'", $emailneu, $Name);
$ergebins = mysql_query($query, $verbindung);
if (isset($_POST['gesendet'])) {
header('Location: http://localhost/balzer/admin/aenderung/email_erfolg.php');
exit;
}
}
?>
</div>
</div>
<div id="footer">
<?php
include("../../data/footer_admin.html");
?>
</div>
</div>
</body>
</html>
Tach!
ich habe in dem Quelltext irgendwo einen "Cannot modify header information" Fehler. Nach ein bisschen googlen sollte irgendwo ein Leerzeichen vor oder nach einem PHP Tag sein. Habe ihn aber noch nicht gefunden. So langsam bin ich ratlos und hoffe das mir hier jemand helfen kann.
Das kann eine Ursache sein. Jegliche Ausgabe, die vor Header-modifizierenden Funktiuonen aufgerufen wird, ist ein Problem.
Warning: Cannot modify header information - headers already sent by (output started at H:\xampp\htdocs\balzer\admin\aenderung\email.php:50) in H:\xampp\htdocs\balzer\admin\aenderung\email.php on line 101
Schau bitte selbst nach. Die Ausgabe startete in der Datei email.php in Zeile 50. So steht es in der Meldung. Und in Zeile 101 sollte ein Header modifiziert werden.
dedlfix.
Tach!
Warning: Cannot modify header information - headers already sent by (output started at H:\xampp\htdocs\balzer\admin\aenderung\email.php:50) in H:\xampp\htdocs\balzer\admin\aenderung\email.php on line 101
Noch etwas, die Lösung kann ein Umsortieren der Abarbeitung nach EVA-Prinzip sein. Der E-Teil (Eingabe) ist meist weniger wichtig, den hat PHP schon erledigt. V und A ist hauptsächlich deine Aufgabe. Erst die Verarbeitung und dann die Ausgabe. Zur Ausgabe vorgesehene Daten, die während der Verarbeitung anfallen, musst du erstmal zwischenspeichern. Auch das Stichwort Affenformular könnte dich weiterbringen.
dedlfix.
Hallo,
ich habe in dem Quelltext irgendwo einen "Cannot modify header information" Fehler.
nein, nicht "irgendwo". Die Fehlermeldung sagt dir sehr genau, wo.
Nach ein bisschen googlen sollte irgendwo ein Leerzeichen vor oder nach einem PHP Tag sein.
Nein, nicht "irgendwo", sondern vor einer PHP-Anweisung, die irgendwelche HTTP-Header setzen soll (Cookie, Session, oder einfach nur header() allgemein). Nicht unbedingt _direkt_ davor. Und es muss auch nicht unbedingt ein Leerzeichen sein - jegliche Ausgabe an den Client vor dem Setzen von Header-Informationen löst diesen Fehler aus.
Warning: Cannot modify header information - headers already sent by (output started at H:\xampp\htdocs\balzer\admin\aenderung\email.php:50) in H:\xampp\htdocs\balzer\admin\aenderung\email.php on line 101
Da steht's doch: In Zeile 101 trat der Fehler auf - dort willst du irgendwelche HTTP-Headerdaten setzen. Die erste Ausgabe an den Client, die das verhindert, hast du aber schon in Zeile 50 gemacht. Das passt aber nicht mit deinem gezeigten Code zusammen; da sehe ich die erste Ausgabe schon in Zeile 7 (es sei denn, PHP zählt die Zeilen in den includes gleich mit, das wäre aber irreführend und mir bisher nicht aufgefallen).
Das Verstümmeln von Umlauten war übrigens noch nie wirklich nötig. Ich weiß zwar nicht, was für eine Zeichencodierung du wirklich verwendest - ANSI ist keine. ANSI ist aber das Buzzword, das der Windows-Editor verwendet, wenn er Windows-1252 meint. Und auch in dieser Codierung sind Umlaute darstellbar, man kann (und sollte) sie also direkt im Klartext hinschreiben.
Ciao,
Martin