Hi,
»» Das HEADER versagt wenn bereits Leerzeichen zum Browser gesendet wurden, ist klar, aber auch innerhalb PHP? Wie kann das denn?
Ist ja nicht "innerhalb" PHP.
Nein? Wenn ich die Datei nicht include, sondern direkt einfüge ist es doch auch innerhalb oder nicht?
»» 2. test.php
Wenn am Ende dieser Datei noch ein Leerzeichen steht, ist das gleichbedeutend mit dem Befehl echo " "; an dieser Stelle.
»»
Ja in der index.php klar, aber die test.php wird doch nur eingefügt in einem bereits bestehenden php Bereich.
Und wenn du dir dann mal den Programmfluss mit diesem zusätzlichen Echo ansiehst, wirst du feststellen, dass dein require_once() in der index-Datei dieses Echo eben ausführt, bevor die Funktion mit dem header() aufgerufen wird. Folglich ist schon Ausgabe erfolgt, bevor der Header gesendet wird.
Wenn dem so ist, dürfte doch mein letztes Beispiel nicht funktionieren, aber du sagst ja weiter:
Wenn du header() aus der Funktion herausnimmst, wird dieser Befehl ausgeführt, bevor das Leerzeichen ausgegeben wird - dann funktioniert alles.
»»
ach so, ok zumindest das verstehe ich.
Um zu vermeiden, dass nachfolgende Leerzeichen in Includes dir die Show zerstören, ist es sinnvoll, das schließende PHP-Tag "?>" wegzulassen. Die Coding-Standards von Zend fordern das beispielsweise sogar explizit, das ist also kein "unsicheres Verlassen auf irgendeinen Automatismus", sondern gehört so. PHP ist es egal, ob die Datei "ordnungsgemäß" geschlossen wird, oder ob der PHP-Bereich offen bleibt.
den schliessenden tag soll ich weglassen. Mal davon abgeshen, dass dann blöd mit dem Editor zu arbeiten ist wegen Syntaxhervorhebung, kommt dann auch mein persönlicher Ordnungssinn nicht klar. Beide Tags weg ok, aber einer alleine?
Gruss
Mike