setCookie bringt Fehlermeldung

Grunge

Erfahrenes Mitglied
Hey Leute,
habe schon gegooglet, aber noch keine passende Lösung gefunden ich bekomme folgendes:

HTML:
Warning: Cannot modify header information - headers already sent by......

ich weiß das ich keine Ausgaben vor dem setCookie haben darf usw... Die Frage ist wo tue ich das? Ich vermute das das Problem bei meinem Templatesystem liegt. Kurzer Erklärung wie das bei mir funktioniert:
Es wird eine php-Datei included, die übergibt, welche tpl-Datei sie haben will. Alles wird durch meine index.php verarbeitet, ich vermute das dort auch irgendwo der head ausgeben wird, aber so richtig find ich den Fehler nicht!?

VIelleicht könnt ihr mir ja sagen wo ich suchen muss ;)

ANMERKUNG:
Dadurch das der Cookie in einer eingebundenen php Datei gesetzt wird, geschehen natürlich allein durch die index.php schon ausgaben...Kann man das anders realisieren? So das der Cookie wirklich bei Bedarf am anfang gesetzt wird !?
 
Zuletzt bearbeitet:
Es darf NIRGENDWO vorher eine Ausgabe erfolgen, alsu auch nicht in includes, requires, autoloads, usw

Außerdem muss du, wenn du UTF8 benutzt, das ByteOrderMark (BOM) weglassen/auslassen/deaktivieren.
 
Nur so nebenbei, an den Erklärungen von alxy gibt's nix zu rütteln, aber evtl. ist für dich Output-Buffering interessant.

Nur kurz angerissen:

--- start ---
1. ob_start()
2. Geschäftslogik, Ausgaben, etc.
3. ob_get_flush() + echo oder ob_end_flush()
--- ende ---
 
danke saftmeister hat funktioniert - kannst du mir kurz sagen welche nachteile die funktionen bringen?! bzw was sie genau machen?!
 
Output-Buffering wirkt sich so aus, das der Output statt direkt an den Browser gesendet zu werden, erstmal im Speicher vorgehalten wird. Das heißt, du brauchst zusätzlichen Speicher. Bei geringen Memory-Limit empfiehlt es sich nicht, OB zu verwenden, aber es hängt natürlich auch von der Menge zu puffernden Daten ab.
 
diese Möglichkeit nenne ich gerne quick 'n dirty...
Halte dich an EVA und alles ist ok. Dann brauchst du diese Funktionen nicht ;)
 
Zurück