Hey, ich versuche grad ein Script zu schreiben, das den Download von Dateien erzwingt und nebenbei noch den Dateinamen- und Speicherort nicht anzeigt. Das ist in diesem Fall noch nicht gut gelößt, aber gerade nebesächlich, das wird später geändert. Worum es eigentlich geht:
So sieht das Ding aus, die Variable $fileid wird aus einer anderen Datei per URL übergeben, also so: download.php?fileid=xxx
und je nach dem, welche fileid übergeben wird, sollte eigentlich die jeweilige Datei zum Download angeboten werden. Das aber funtzt nich, weiß jemand warum?
P.S: Die Zeile 5 is auskommentiert, so sollte es theoretisch auch gehn, aber das geht auch nich.
Das funktioniert nicht, da register_globals hier deaktiviert ist. Außerdem, woher soll die Variable $Datei kommen? Die 8. Zeile enthält auch einen Fehler. Ist übrigens kein so toller Ansatz, mit einem Array bist du da besser beraten.
Seit 4.2 ist es standardmäßig off, seit PHP 6 existiert es nicht mehr. War es in PHP 3 immer on? PHP 3 habe ich nicht erlebt, habe direkt mit PHP 4 angefangen.
Allerdings tut sich dabei nun noch ein kleines Problem auf, nämlich, dass beim Download als Filetyp Microsoft-Word-Dokument angegeben wird… So will Firefox es auch downloaden.
Wenn man es aber direkt öffnen lässt (also temporär speichern und in adobe reader öffnen) geht es ohne Probleme.
Is also nur n Problem des erkannten/angegebenen Dateityps.
Ach ja: Falls das nicht zu kompliziert is, könnte noch jemand poste was da noch rein muss, damit ne Fehlermeldung, ausgespuckt wird, falls es die Datei nicht gibt. Am besten in einer kleinen Messagebox, mit “ok” schaltfläche
1.) Ich würde dir Umbedingt zu einem Array raten (bzw. das holen der Daten aus einer Datei)
2.)Dein Header ist Quatsch (“Content-Type: application/force-download”), diesen MIME-Typ gibt es nicht, du solltest diesen hier verwenden [quote]“Content-Type: application/octet-stream”[/quote]
Der ist für allgemeine Sachen (Octet = Acht, Stream = Folge, also eine Folge asu Bytes, und das ist so “ziemlich” jede Datei…)
Danke, jetzt funktioniert es. Allerdings hab ich das mit der „dateien.txt“ mal ausprobiert, und da lädt er eine 0-byte Datei herunter, die hat zwar den richtigen Namen, aber er findet wohl die echte Datei nicht. Gibts da noch eine elegantere Lösung, die Dateien in einer externen Datei zu speichern, möglichst auch noch so, dass dort der Speicherort angegeben ist und diese „Dateien.txt“ auch wenn man ihren Speicherort kennt nicht einsehbar/herunterladbar ist?
Und noch zu guter letzt:
Was noch super wäre, ne saubere Fehlermedung, falls es die angeforderten Dateien nicht gibt.
Dass man nicht direkt auf die downloads.php zugreifen kann