Thorsten S.: Download-Skript mit Apache-Weiterleitung

Beitrag lesen

Hallo Foruminner und Forumer,

verusche mal mein Problem zu schildern,

Es sollen verschiedene Dateien zum Download angeboten werden. Diese downloads sollen tagesaktuell geloggt werden, wichtig ist dabei (erstmal) nur die Anzahl der downloads, kam der download von einer anderen Seite aus und wann war der letzte zu dieser Datei.

Mit den log-files zu arbeiten bringt hier eher wenig, erstens werden diese vom Provider nur einmal pro Woche upgedated und zweitens ist eine eigene Lösung besser auf die Ziele ausrichtbar (und drittens ne grosse herausfordeung der ich mich stellen will ;) )

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.

Obwohl beide Probleme mit wenigen Griffen lösbar wären hab ich die Lösung zunächst rausgenommen, da ich keinem user das nötige know-how von vorneherein abverlangen will (die zielgruppe sind eher nicht so versierte user) und eine FAQ will auch erstmal gelesen sein ;)

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.
Diese Lösung funktioniert 1a, bisher in keinem Browser auch nur im Ansatz ein problem.

Nun hätte ich die Lösung gerne entwas flexibler (und da beginnen meine Probleme :( )

Bisher muss ich so für jede Datei ein PHP-Skript unter dem selben Namen anlegen. Deswegen habe ich versucht über RewriteRulez alle Anfragen die mit .zip enden an ein zentrales PHP-Skript zu übergeben, welches dann einfach das entsprechende File öffnet und weiterleitet.
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.)

Ich habe deswegen versucht das ganze über none-parsing-header zu realisieren, aber da bin ich nicht ganz durchgestiegen. Ich fand nur Beispiele für cgi's (bin mir immer noch nicht sicher ob das irgendwie ein ganz gewisses Schema erfüllen muss) und das ganze (so in etwa habe ich das verstanden) funktioniert nicht unter PHP in der CGI-Version(?)

Mein Provider benutzt Apache 1.3.24 und PHP 4.2 als CGI

2 Lösungen schweben mit vor.

1.) ich kann irgendwie verhindern, das die Standard-Header vom Apache geschickt werden und erlange vollständige Kontrolle über die HTTP-Header.
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.

vielleicht hat ja noch irgendwer ne brauchbare Idee (mir gehen sie gerade akkut aus).

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

Gruss

Thorsten