Cheatah: Download-Skript mit Apache-Weiterleitung

Beitrag lesen

Hi,

Dazu habe ich ein kleines download-skript in PHP geschrieben, welches dann mit download.php?file=xxx aufgerufen wird, das Skript funktionierte  soweit ganz gut, mit 2 problemen. 1.) Mozilla 1.0 unter Windows hat an den Dateinamen des downloads immer .php angehängt also aus setup.zip wurde setup.zip.php, erst nach der Einstellung für die Endung .php funktionierte das ganze Reibungslos, 2.) der T-Online-Browser (4.5) wollte die Datei immer unter download.php?file=xxx abspeicher, mit manuellen umbenennen ging der download dann aber reibungslos.

hast Du einen Content-Disposition-Header mitgeliefert? Wenn ja, wie sieht der genau aus?

Eine zweite Lösung bestand darin das wenn eine Datei setup.zip heruntergeladen werden soll, dafür ein PHP-Skript mit genau diesem Namen anzulegen. Mit einer kleinen .htaccess-Datei dann sicherstellen das .zip-Dateien an den PHP-Parser übergeben werden. Also ist setup.zip eigentlich ein PHP-Skript welches die wirkliche setup.zip öffnet und an den Browser weiterleitet.

Ja, das ist sauber. Wobei natürlich eine .htaccess, die normalerweise nicht gebraucht würde, eine potentielle Performance-Falle ist - das macht sich aber bei "normalem" Traffic nicht bemerkbar.

Bisher muss ich so für jede Datei ein PHP-Skript unter dem selben Namen anlegen.

Nö:

RewriteRule /download/(.+) /download.php?file=$1

Zumindest grob gesehen. Details entnimm bitte der Apache.Doku zu mod_rewrite.

Das Problem bei Rewrite liegt aber an dem HTTP_Status-Code 302, der ja zunächst den Browser von der neuen URL informiert. Somit habe ich aber wieder das Problem des falschen Dateinamen (s.o.)

Wie gesagt: Details siehe Doku ;-)

Mein Provider benutzt Apache 1.3.24 und PHP 4.2 als CGI

Du solltest ihn darauf hinweisen, dass er aus Sicherheitsgründen einen 1.3.26 installieren soll. Bei Apache ist vor wenigen Wochen eine Sicherheitslücke aufgetreten, die eine schwere DoS-Attacke ermöglicht; in Version 1.3.26 ist dies gefixt.

1.) ich kann irgendwie verhindern, das die Standard-Header vom Apache geschickt werden und erlange vollständige Kontrolle über die HTTP-Header.

Ja! Die Macht ist mit Dir! *g*

Ernsthaft: mod_rewrite bietet Dir eine Menge Möglichkeiten; und ist möglicherweise sogar unnötig, wenn nämlich Deine bisherigen Header suboptimal waren.

2.) Ich mache das über ne Weiterleitung an ein zentrales PHP-Skript falls die entsprechende "gefakte" zip nicht existiert, dieses erzeugt die zip (mit dem PHP-download-code) und leitet an diese zurück.

Beziehungsweise Du machst Dich mit dem Begriff PATH_INFO vertraut und umgehst die gesamte Problematik. Aber das wäre ja zu einfach ;-)

Hoffe mal ich konnte mich einigermassen verständlich ausdrücken.

Sehr. Ich glaube, Du bist einfach nur kräftig in den Wald gerannt, den Du jetzt vor lauter Bäumen nicht mehr siehst, weil Dir einer von den Dingern ein mächtiges Brett vor den Kopf genagelt hat *g*

Cheatah