Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Downloadskript mit PHP
Frage
Hallo!
Ich habe in diesem Thread: [url]https://supportnet.de/threads/157317[/url] ein Skipt gefunden, dass mir den Download per PHP erlaubt, ohne dass der Nutzer den genauen Pfad meiner Datei kennt. Ich habe es etwas angepasst und erst einmal auf irgendwelche Sicherheitsprüfungen verzichtet. Der download an sich funktioniert auch. Das Problem ist aber, dass wenn ich die runtergeladene Datei öffne, ich praktisch den Inhalt des Frames zu sehen bekomme und auch den Inhalt der Datei selbst, aber mit äußerst kryptischen Zeichen und ohne jeglichen Formatierungen, also im Grunde überhaupt nicht die Originaldatei. Ich vermute irgendwelche Problem, die beim runterladen entstehen, denn wenn ich einen direkten Link zu der Datei angeben (also ohne das folgende Skript), dann funktioniert die Datei, also alles ist ok.
Hier mal der Code:
Der Link mit der das nachfolgende Skript aufgerufen wird:
<a href="content.php?function=fnreview&savefile=´.$review["id"].´">Download</a>
[code]
if (isset($_GET[´savefile´]) && $_GET[´savefile´]!="")
{
$file=$review["filename"];
$path="../upload/";
Header("Content-Type: application/force-download");
Header("Content-Transfer-Encoding: binary");
Header("File-Length: " . filesize("$path/$file"));
Header("Content-Disposition: attachment;filename=$file");
Header("Cache-Control: no-store, no-cache, must-revalidate");
Header("Pragma: no-cache\n");
readfile("$path/$file");
}
[/code]
Ach ja, meine Testdatei ist eine Word-Datei. Wenn ich diese dann öffne, dann werde ich erst mal darauf hingewiesen, dass die *.css Datei fehlt. Das muss ich dann mit ok bestätigen, bei nein wird sie sonst gar nicht erst geöffnet. Ich habe es sowohl mit Firefox als auch mit IE unter WinXP getestet.
Ich hoffe, es hat jemand eine Lösung/Tipp?
Antwort 1 von Rasir
Ich hab das Skript
bei mir getestet und es funzt. Überprüfe mal ob Deine Namen und Pfade stimmen.
$file="Dokument.doc";
Header("Content-Type: application/force-download");
Header("Content-Transfer-Encoding: binary");
Header("File-Length: " . filesize($file));
Header("Content-Disposition: attachment;filename=$file");
Header("Cache-Control: no-store, no-cache, must-revalidate");
Header("Pragma: no-cache\n");
readfile($file);
bei mir getestet und es funzt. Überprüfe mal ob Deine Namen und Pfade stimmen.
Antwort 2 von kathrin-77
Ja, bei mir funktioniert es ja auch, zumindest bis zum runterladen. Nur wie gesagt zeigt die Datei irgendwie falschen Inhalt. Wie kann das sein, dass ich zwar runterladen kann, aber nicht den Inhalt sehe bzw. ganz anders formatiert. Ich prüfe noch mal die Pfade, kann ja eigentlich nur sowas in der Richtung sein, warum es bei mir nicht 100pro funzt.
Danke erst mal!
Kathrin
Danke erst mal!
Kathrin

