Problem mit PHP Header

web16f2

Grünschnabel
Hallo,

also ich bin neu auf dem Gebiet PHP und beschäftige mich erst seit einigen Tagen intensiv damit. Nun steh ich vor meinem ersten Problem:

HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
PHP:
<?php
if (isset($pw)) {
if ($pw=="Na7x") {
header("Location: ziel1.html");
}
elseif ($pw=="Na6x") {
header("Location: ziel2.html");
}
else {
header("Location: nase.html");
}
}
?>
HTML:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Unbenanntes Dokument</title>
</head>

<body>
<form action="<?php echo $PHP_SELF; ?>"
method="post">
<input type="text" name="pw">
<input type="submit" value="Senden">
</form>
</body>
</html>

Also wenn ich das ausführe kommt folgende Meldung im Browser:

Warning: Cannot modify header information - headers already sent by (output started at /srv/www/htdocs/web16/html/bernd/pass1.php:2) in /srv/www/htdocs/web16/html/bernd/pass1.php on line 11

Was mach ich falsch? Es hilft auch nix wenn ich

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

in der ersten Zeile weglasse.

ps: Sorry das ich wegen so ner kleinigkeit gleich ein neues Thema eröffne aber ich hab darüber nix im Forum gefunden!

Vielen Dank für jede Antwort!
Bernd
 
web16f2 hat gesagt.:
in der ersten Zeile weglasse.
Ich nehme das mal wörtlich.
Dann ist da Dein Fehler.
Es darf nichts, rein gar nichts, auch kein Lerzeichen oder Zeilenumbruch, im HTML-Teil sein, bevor [phpf]header[/phpf] aufgerufen wird.
Es darf auch nichts per echo oder sonstwie ausgegeben werden.

Gruß hpvw
 
HTTP-Header – nicht etwa PHP-Header – werden vor Versenden des eigentlichen Inhalts (z. B. ein HTML-Dokument) gesandt und beschreiben den nachfolgenden Inhalt (beispielsweise Inhaltstyp, -kodierung, etc.). Daher müssen auch in PHP-Skripten zuerst alle nötigen HTTP-Header gesandt werden, bevor der eigentliche Inhalt ausgegeben wird.
Ich glaube, mittlerweile speichert PHP selbstständig die Ausgabe zwischen und sendet zuerst alle HTTP-Header, auch wenn diese erst am Ende des PHP-Skriptes beschrieben werden und bereits eine Ausgabe mittels echo stattfand.
 
Vielen Dank für eure Hilfe! Jetzt gehts! Ich hab die erste Zeile

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

einfach weggelassen und mit php ganz oben angefangen. Dann geht alles.

Gruß
B. Wächter
 
Wieso lässt du die Dokumenttyp-Deklaration weg? Setze einfach den PHP-Teil an den Anfang des Skriptes.
 
Zurück