Mike: header location versagt wegen Leerzeichen in PHP ?

Beitrag lesen

Hi,

total seltsam.

Das HEADER versagt wenn bereits Leerzeichen zum Browser gesendet wurden, ist klar, aber auch innerhalb PHP? Wie kann das denn?

Beispiel mit 2 Dateien

1. index.php

Inhalt:

  
<?php  
require_once('test.php');  
test();  
exit;  
?>  

2. test.php

Inhalt:

  
<?php  
  
function test()  
{  
header('location:http://google.de');  
}  
  
?> 

########################################

Das bedeutet test.php wird in index.php includet. Wohlgemerkt, kein HTML, kein Leerzeichen oder sonstwas ausserhalb von den PHP-Tags.

Aber! test.php enthält ein Leerzeichen, und zwar direkt neben dem abschliessenden php-tag also bildlich: ?> &nbsp;

Im Prinzip sollte das sowieso egal sein, weil index.php ja keinen leeren Bereich hat, alles innerhalb der TAGS.

Trotzdem kommt die typische Fehlermeldung "Cannot modify header information - headers already sent..." und die Aktion wird nicht ausgeführt.

Entferne ich das Leerzeichen funktioniert es, wie es soll.
-------------------------------------------------------------
Das alleine verstehe ich schon nicht, warum ist das so?

Aber dann kommt noch was Lustiges, wenn ich das Leerzeichen drin lasse und die test.php ändere in:

  
  
<?php  
  
header('location:http://google.de');  
  
function test()  
{  
  
}  
?>  

dann geht es auch problemlos. Also das kann doch nicht sein, entweder das Leerzeichen ist schuld, was nicht nachvollziehbar ist, dann dürfte aber auch nicht das letzte Beispiel funktionieren, denn hier wird ja auch die komplette Datei includet. Bug, oder habe ich einen Denkfehler?

Mike