Hallo zusammen,
ich habe ein Problem mit header(). Ich habe ein Skript, welches nicht ganz auf meinem Mist gewachsen ist ;-). Unter anderem werden in diesem einige Daten gesammelt und sollen dann in einer Datei zum Download angeboten.
Das Problem ist nun, das das mit dem Download nicht wirklich klappt. Die folgenden Zeilen rufen Warnungen hervor:
(Cannot modify header information - headers already sent by ....)
header("Pragma:public");
header("Expires:0");
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
header("Content-Type:$content_type");
header("Content-Disposition:attachment; filename=\"$export_name\"");
header("Content-Description:File Transfer");
header("Content-Length:".filesize($tmpfname) );
header("Accept-Ranges:bytes");
Weiter geht es dann mit:
Es wird keine Datei zum Download angeboten, sondern der Inhalt wird im Browser direkt angezeigt.
Das mit dem ... headers already sent by...... liegt wohl daran, dass in der die Datei, in der die Daten gesammelt werden und die Datei zum download angeboten werden soll, in eine index.php included wird. In dieser wird schon ein Header gesendet. Also index.php (header gesendet)->inlcude export.php (...soll nochmal header gesendet werden...).
Hat jemand eine idee, wie man das anders lösen könnte?
Ich hatte eventuel daran gedacht, den Code oben in eine neue Datei zu schreiben, diese dann aus der export.php heraus aufzurufen und die benötigten Variablen an die neue Datei zu übergeben...($content_type, $tmpfname, $export_name)
Kann man das eventuell so machen oder gibt es bessere Lösungen?
Vielleicht noch der Hinweis....dass der Header schon in der index.php gesendet wird, liegt wohl daran, dass ich am Anfang der datei ein Codeschnipsel eingefügt habe, der zu meinem Counter gehört und dadurch der Seitenaufruf eben gezählt wird....Das kann ich nicht ändern, könnte nur den Counter ganz rausnehmen, aber dann wird die Seite nicht mehr gezählt.
Wenn ich den Counter rausnehme, funktioniert das ganze einwandfrei....
Also wird der Header schon durch den in die index.php eingebundenen Counter gesendet. Ursache gefunden, aber leider noch keine Lösung...
Grüße