Frank Schönmann: downloads per login ermöglichen?

Beitrag lesen

hi!

ich möchte dateien zum download bereitstellen, allerdings sollen
nur bestimmte registrierte personen bestimmte dateien downloaden
können.

Ich gehe davon aus, dass deine Benutzer sich schon irgendwie zu
erkennen gegeben haben, entweder über .htaccess oder eine beliebige
andere Login-Methode.

Das Anzeigen des Verzeichnis-Inhalts kannst du über eine Einstellung
des Webservers verhindern, zb. durch einen Eintrag in der .htaccess.
"Options -Indexes" müsste dort weiterhelfen. Dann können deine
Besucher schonmal die fremden Dateien nicht runterladen, wenn sie
den Dateinamen nicht kennen. In diesem Fall könntest du also die von
dir bereits genannte Lösung oder eine vergleichbare verwenden, indem
du einfach die Links ausgibst oder die Leute per Location:-Header
umleitest, was es für Laien noch etwas schwieriger macht, den Link
einfach weiter zu geben.

Das Anzeigen des Verzeichnis-Inhalts kannst du übrigens auch ohne
den Weg über die Server-Konfiguration verhindern, indem du einfach
eine index.html-Datei[1] in das Verzeichnis legst.

Falls die Gefahr besteht, dass die Leute untereinander die Dateinamen
austauschen, könntest du zb. jede Datei in ein eigenes Verzeichnis
legen und für jedes dieser Verzeichnisse eine .htaccess anlegen, die
regelt, welcher Benutzer auf das entsprechende Verzeichnis zugreifen
kann.

Ist eine .htaccess-Lösung auch nicht möglich, kannst du auch die
Binär-Dateien direkt von einem CGI-Skript ausgeben lassen, das vorher
den Benutzer überprüft. Den richtigen Dateinamen erhälst du, indem
du diesen einfach als PATH_INFO an die Skript-URL anhängst. Das
könnte zb. so aussehen:

http://www.server.de/cgi-bin/skript.cgi/datei.zip

Das CGI-Skript müsste dann nur noch die Daten direkt aus der Binär-
Datei lesen -- im Binärmodus natürlich -- und diese mit geeignetem
HTTP-Header -- Content-type: application/octet-stream vermutlich --
an den Browser weitersenden.

bye, Frank!

[1] index.html steht in diesem Fall stellvertretend für beliebige
    mögliche DirectoryIndex-Dateien.