Weiter geht’s

Jetzt muss auch endlich mal etwas Inhalt her, was bringt sonst jegliche tolle technische Spielerei, außer mir Spaß am Programmieren? ;)

“headers already sent” durch WordPress-Plugin

Die Meldung “headers already sent” wir jeder PHP-Programmierer kennen. Aus verschiedenen Gründen gibt es eine headers()-Anweisung erst nach einer Ausgabe. Das kann z.B. vorkommen wenn ein Cookie gesetzt werden soll oder sonst irgendwelche Header verändert werden sollen. Normalerweise kann man recht schnell erkennen, an welcher Stelle der Text schon ausgegeben wurde (steht ja auch direkt in der Fehlermeldung):

Warning: Cannot modify header information – headers already sent by (output started at lastfm.php:1) in pluggable.php on line 391

Komisch war aber schon, dass auch im an den Browser gelieferten HTML-Quelltext nichts stand. Normalerweise findet sich dort zumindest mal ein <body>. Und in der lastfm.php fand sich ebenfalls nichts (der “übliche” Fehler mit dem Leerzeichen vor <?php fiel also weg).

Letztendlich war es eine einfache Ursache, aber mit bloßem Auge nicht sichtbar: Es wurden tatsächlich keine sichtbaren Zeichen gesendet. Allerdings hatte ich die Datei als UTF-8 gespeichert – und da gibt es standardmäßig ein Byte Order Mark (BOM). Das sind drei Byte am Anfang der Datei, die signalisieren, dass es sich um das UTF-8-Format handelt. Diese wurden beim Einbinden des Plugins immer gesendet, und wenn danach noch ein Header-Befehl kommt, dann erscheint eben diese Fehlermeldung. Umgehen kann man das, indem man einfach seinen Texteditor anweist, die Datei ohne BOM zu speichern.

Workaround: Eingebettetes Flash-Objekt verursacht Flackern beim Seitenwechsel

Es sind immer die eigentlich kleinen Details, für die man die meiste Zeit braucht. Eben hatte ich das Vergnügen, wieder eines zu entdecken: Mir fiel auf, dass das Navigieren durch die Seiten nicht so “weich” verlief wie ich das gerne gehabt hätte. Da ich momentan noch so gut wie keinen Inhalt auf den Seiten habe, wäre zu erwarten gewesen, dass große Teile des sichtbaren Bereichs beim Seitenwechsel einfach gleich bleiben. Das war aber leider nicht so, denn jedes Mal, wenn ich einen Link angeklickt habe hat Firefox die komplette Seite neu gezeichnet, was sich durch eine Art “Flackern” bemerkbar machte. :?
(mehr …)