Hallo Carole,
im Prinzip ist das ja alles richtig, was du schreibst. Nur ...
header("Content-Type: application/vnd.ms-excel");
... wenn du den Content-Type angibst, der tatsächlich zur Datei "gehört", dann führt das oft dazu, dass der Browser direkt versucht, die Datei anzuzeigen (evtl. über ein entsprechendes Plugin). Wenn ich Peter richtig verstanden habe, möchte er aber nur, dass die Datei zum Speichern angeboten wird. Deshalb habe ich den "neutralen" Content-Type: application/octet-stream empfohlen, der keine Information über den Dateiinhalt gibt.
header("Pragma: no-cache");
header("Expires: 0");
Naja, das wäre auch nicht unbedingt nötig, schadet aber auch nicht.
Danach kann man mittels echo die Inhalte der Datei ausgeben.
Das ist bei einer beliebigen Datei, deren Inhalt nicht textorientiert ist, gefährlich. Besser ist da readfile(), denn damit wird der gesamte Dateiinhalt exakt 1:1 übertragen, ohne dass irgendwas daran interpretiert oder umgewandelt wird (z.B. Zeilenumbrüche).
Zum Beipiel eine PDF Datei wird, wenn der Benutzer Acrobat installiert hat, im Browser direkt angezeigt.
Ja, dieses Verhalten mag ich als Benutzer aber überhaupt nicht. Lieber lasse ich den PDF-Reader als separates Programm starten.
Schönen Abend noch,
Martin
F: Was ist schneller: Das Licht oder der Schall?
A: Offensichtlich der Schall. Wenn man den Fernseher einschaltet, kommt immer erst der Ton, und dann erst das Bild.