Zitat von
Valle:
Das ist falsch. PHP sendet automatisch einen HTTP-Header "Content-Type" mit dem Inhalt "text/
html" an den Browser. Daran erkennt der Browser, dass es sich um
HTML handelt. Am Doctype erkennt er nur, was für'n
HTML du da sendest.
Beides ist falsch
Rein theoretisch gibt der Content-Type an, welchen Content (ob Bild, Text, Word-Dokument, etc.) der Browser da geliefert bekommt. Da dies aber nicht immer korrekt gemacht wird (z.B. senden viele Download-Scripte keinen Mime-Type voraus) raten die Browser da gerne mal.
Kleiner Test: rufe ein PHP-Script mit folgendem Code in Firefox und Internet Explorer auf:
Code:
<?php
header('text/plain');
?>
<!DOCTYPE
HTML PUBLIC "-//
W3C//DTD
HTML 4.01 Transitional//EN">
<head>
<title>Test</title>
</head>
<body>
[b]Test[/b]
</body>
</
html>
Was ist das erwartete Verhalten? Der Browser zeigt den
HTML-Code direkt an. Wenn ich es richtig in Erinnerung hab (hab grad keine Zeit zu testen) zeigt der IE in dem Fall nicht den
HTML-Code an sondern interpretiert das
HTML, weil er sieht, dass da
HTML geliefert wurde - und das obwohl text/plain als Content-Type geschickt wurde. Das entsprechende Stichwort heisst "Content-Type Sniffing".
@Albert: in Tutorials und Buechern vergisst man oft so Kleinigkeiten, die man automatisch macht - wie z.B. die von Daniel erwaehnte Verwendung von <pre>.
@Daniel: dein Code ist eigentlich nicht ganz korrekt.
print_r() mit einem Parameter gibt void zurueck - also nada. Nur wenn du als zweiten Parameter true uebergibst, gibt die Funktion die Ausgabe nicht direkt aufm Output-Buffer aus sondern gibt ihn zurueck:
Code:
echo '<pre>', print_r($abc, true), '</pre>';
Greetz
alcaeus