Zum Inhalt springen

Sporadisches "Headers already sent" seit PHP-Script für Sprachauswahl benutzt wird

Erstellt am 8. Januar 2008 · 2 Antworten · letzte Antwort am 16. Januar 2008

Tags: PHP, Frage

gtdaexl ·

Hallo Forumsgemeinde,

habe folgendes Problem mit meinem Typo3-Projekt, welches ich auch nach Check der Forumssuche und intensives Googeln nicht lösen konnte:

Ich habe bei meinem Projekt eine Sprachauswahl installiert. Folgendes PHP-Script generiert mir einen Link, welcher es je nachdem, welche Sprache aktuell ausgewählt ist, dem User ermöglicht, auf die jeweils andere Sprache umzuschalten:

<?php 

if (!is_object($this)) die ('Error: No parent object present.');

// Für die aktuelle Seite werden alle all pages_language_overlay records geholt. Jeder Record entspricht einer Sprache
$query = "SELECT * FROM pages_language_overlay WHERE pid=".$GLOBALS["TSFE"]->id.$GLOBALS["TSFE"]->sys_page->enableFields("pages_language_overlay")." GROUP BY sys_language_uid";

$res = mysql(TYPO3_db,$query);
$langArr=array();
while($row=mysql_fetch_assoc($res)) {
     $langArr[$row["sys_language_uid"]]=$row["title"];
}

$flags = array();
if ($GLOBALS["TSFE"]->sys_language_uid==0) {
    // Deutsch ist aktiv - Englisch anbieten
    $flags[] = '<a href="index.php?id='.$GLOBALS[" tsfe-="">id.'&L=1" target=_top>View this page in English</a>';
} elseif ($GLOBALS["TSFE"]->sys_language_uid==1) {
    // Englisch ist aktiv - Deutsch anbieten
    $flags[] = '<a href="index.php?id='.$GLOBALS[" tsfe-="">id.'&L=0" target=_top>Diese Seite auf Deutsch anzeigen</a>';
}

// Macht die Ausgabe. Das Menü transferitert die page-id und die "L" variable zur Sprachsteuerung
$content = '<div id="language">'.implode("",$flags).'</div>';

?>

Seit ich dieses Skript benutze, erhalte ich jetzt sporadisch, also wahnwitzigerweise nicht bei jedem Aufruf der Seite folgende Fehlermeldung:

Warning: Cannot modify header information - headers already sent by (output started at /html/fileadmin/scripts/langmenu.php:28-) in /typo3_src-4.1.3/typo3/sysext/cms/tslib/class.tslib_fe.php on line 2907

Bin für jeden Tipp extrem dankbar!

Grüße aus München,

TomD

susanne ·

Hallo Tom,

in der Fehlermeldung steht, dass der Fehler in Zeile 28 deines Skripts auftritt. Dein gepostetes enthält aber nur 26 Zeilen. Hast du dahinter noch Leerzeilen ? Wenn ja, beseitige sie.

Tschau Susanne

brokemeister ·

Das sporadische auftreten des Fehlers liegt daran, dass der Fehler nur auftaucht, wenn die Seite noch nicht gecacht wurde. Wenn die Seite gecacht taucht der Fehler nicht mehr auf...

Kleiner Tipp:

Schau dir mal das HowTo:

#67175

Dort steht, wie ganz simple per TS ein Sprachmenü erstellst. Das ganze hat deutlich weniger Zeilen als dein PHP-Script und ist auch deutlich einfacher einzubinden...

Gruß

Malte