Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Anfängerfrager zum header-Problem
Frage
Hallo,
Ich hab die tpyische Meldung
"Warning: Cannot modify header information - headers already sent by...."
Ich weiss inzwischen, daß vor dem header keine Angabe/Ausgabe gemacht werden sollte.
[b]
Meine Frage:[/b]
Was zälhlt denn im folgenden Code als Ausgabe?
Der Headbereich und/oder der echo-befehl, obwohl er im if-Bereich formuliert ist?
[code]
<html>
<head>
<title>Anfrage-Formular</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<?
if ($_POST[´button´])
{
if (!$_POST[´eis´])
{
echo ´Es fehlen Daten´;
}
else
{
header("location: formular2.php");
mail("xyz@xyz.info", "Anfrage", "Eingaben: :Name: $name - Email: $email - Anfrage: $anfrage", "From:$email");
}
}
//hier folgt das Formular:
echo ´
<form name="anfrage" action="´.$_SERVER[´PHP_SELF´].´" method="post">[/code]
Vielen Dank für Eure Tips vorab
Antwort 1 von gast16
Zitat:
Was zälhlt denn im folgenden Code als Ausgabe?
Was zälhlt denn im folgenden Code als Ausgabe?
Alles was in der Quelltextanzeige des Browsers erscheint. Und sei es nur ein Leerzeichen. Also alles was irgendwie durch PHP ausgegeben wird oder ausserhalb von <?php ?> steht.
Ausnahmen sind nur die Ausgaben von Header-Funktionen, wie z.B. header() oder setcookie().
Antwort 2 von Nitrosamin
hi,
Das zählt als Ausgabe.
Auch
Nitro
Zitat:
<html>
<head>
<title>Anfrage-Formular</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<html>
<head>
<title>Anfrage-Formular</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
Das zählt als Ausgabe.
Auch
Zitat:
echo ´Es fehlen Daten´;
zählt dazu, wobei er sich aber nicht auswirkt.echo ´Es fehlen Daten´;
Nitro
Antwort 3 von Mel
Danke Euch.
mal sehn, ob ichs verstanden hab.
Das Dokument muss in der ersten Zeile mit "<?php" beginnen und danach hat sofort der Befehl "header " zu folgen, damit es klappt.
Wie mach ich das denn, wenn ich einen Fall mit if habe und bei else einen Redirect mitteilen möchte?
Ist das denn gar nicht möglich?
Ich stell mich hier sicherlich wieder zu dumm an, sorry....
LG
Mel
mal sehn, ob ichs verstanden hab.
Das Dokument muss in der ersten Zeile mit "<?php" beginnen und danach hat sofort der Befehl "header " zu folgen, damit es klappt.
Wie mach ich das denn, wenn ich einen Fall mit if habe und bei else einen Redirect mitteilen möchte?
Ist das denn gar nicht möglich?
Ich stell mich hier sicherlich wieder zu dumm an, sorry....
LG
Mel
Antwort 4 von gast6
Zitat:
Das Dokument muss in der ersten Zeile mit "<?php" beginnen
Das Dokument muss in der ersten Zeile mit "<?php" beginnen
Ja. Es können aber glaub ich auch Leerzeilen davor stehen.
Zitat:
.. und danach hat sofort der Befehl "header " zu folgen, damit es klappt.
.. und danach hat sofort der Befehl "header " zu folgen, damit es klappt.
Nein. Da kann soviel PHP-Code kommen, wie will. Es darf nur nichts ausgegeben werden. Also da können ruhig auch Echo-Befehle stehen, sie dürfen nur nicht zur Ausführung gelangen.
Antwort 5 von Mel
Das Header-Problem beschäftigt mich immer noch:
Wie verhält sich der Header, wenn ich ein css einbinden will.
Die Einbindung kann doch nur im Headteil des Html -codes erfolgen und wäre somit eine Ausgabe, die dann wiederum ein Problem für die Headerweiterleitung wäre oder?
Was meint ihr dazu?
Danke und bis gleich
Mel
Wie verhält sich der Header, wenn ich ein css einbinden will.
Die Einbindung kann doch nur im Headteil des Html -codes erfolgen und wäre somit eine Ausgabe, die dann wiederum ein Problem für die Headerweiterleitung wäre oder?
<html>
<head>
<link rel=stylesheet type="text/css" href="style.css">
<?php
if ($_REQUEST[´button´] && !empty($_REQUEST[´eis´]) && !empty($_REQUEST[´eisdiele´]) && !empty($_REQUEST[´eissorte´]) && !empty($_REQUEST[´eiskugel´]) && !empty($_REQUEST[´eislöffel´]))
{
header("location: formular2.php?SID?"); Was meint ihr dazu?
Danke und bis gleich
Mel
Antwort 6 von gast58
Richtig. Das Problem ist das "<" von "<html>". Das ist die erste Ausgabe, danach ist es zu spät für Header.
Aber es gibt ja auch keinen Grund "<html>" VOR "<?php" zu schreiben. Danach geht doch auch.
Aber es gibt ja auch keinen Grund "<html>" VOR "<?php" zu schreiben. Danach geht doch auch.
Antwort 7 von Mel
Es geht mir eigentlich darum, daß Stylesheet irgendwie einbinden zu können.
kann ich das ganze dann so aufbauen, daß der html-teil erst später kommt?! so zum Beispiel:
bis gleich
Mel
kann ich das ganze dann so aufbauen, daß der html-teil erst später kommt?! so zum Beispiel:
<?php
if ($_REQUEST[´button´] && !empty($_REQUEST[´eis´]) && !empty($_REQUEST[´eisdiele´]) && !empty($_REQUEST[´eissorte´]) && !empty($_REQUEST[´eiskugel´]) && !empty($_REQUEST[´eislöffel´]))
{
header("location: formular2.php?SID?");
<html>
<head>
<link rel=stylesheet type="text/css" href="style.css">
............................
bis gleich
Mel
Antwort 8 von gast58
Ja aber Du musst den PHP-Tag vor <html> durch "?>" schliessen. Bei Bedarf kann man ja später wieder einen Neuen aufmachen.
Antwort 9 von Mel
ja, ok,
dann hab ichs verstanden und probiers auch gleich mal aus.
Mal schaun.
Vielen lieben Dank vorab für die Utnerstützung
Gruss Mel
dann hab ichs verstanden und probiers auch gleich mal aus.
Mal schaun.
Vielen lieben Dank vorab für die Utnerstützung
Gruss Mel

