Der User soll sich eine serverseitig generierte Datei herunterladen können (z.B. Tabellen-Dump).
Dazu generiere ich die Daten als lokale Datei auf dem Server und mache anschließend ein header-forward auf diese Datei.
Das Problem ist, daß sich dann z.B. bei einer .csv-Datei immer Excel öffnet. Es soll aber der ganz normale Download-Dialog erscheinen.
Wie kann ich das in PHP machen?
Du kannst die Datei auch direkt aus Deinem Skript senden, indem Du erst den Inhaltstyp als unbekannt ankündigst und dann per readfile() durchschiebst. Damit sparst Du einen zusätzlichen Verbindungsaufbau (unter Umständen).
header("Content-Type: application/x-msdownload");
readfile("blabla.csv");
Statt "application/x-msdownload" wird häufig auch auf "application/octet-stream" hingewiesen. Das ist zwar inhaltlich auch korrekt, da der IE sich aber mit seinem, aus Microsoft'scher Sicht fürchterlich dämlichen und/oder faulen Benutzer sehr viel Mühe gibt, in diesem Zuge Server-Hinweise ignoriert und stattdessen lieber sämtliche Daten inspiziert, um vielleicht doch noch ein passendes Programm zu finden, funktioniert octet-stream nicht immer.
Gruß,
soenk.e