von subjective |
Du solltest nocht den passenden Content-Type: application/octet-stream mit rausschicken. Das Problem der Dateinamen löst sich ja über die Rewrite-Rule.
Dies ist übrigens die Lösung über ein Wrapper-Script.  |
von Bastian_W |
ich habe das nun so gelöst
Im Downloadverzeichniss liegt eine htaccess Datei mit dem Inhalt:
1:
2:
3:
4:
5: |
RewriteEngine on
Options FollowSymLinks
RewriteRule .* ../checksession.php [NC]
|
und in der checksession.php überprüfe ich ob die Session die ich mit PHP Aufbaue noch gültig ist, bzw keine mehr Existiert... wenn sie gültig ist lasse ich mit:
readfile(".".$_SERVER['REQUEST_URI']);
das jeweils angeforderte File geben...
Was haltet ihr davon?
Das einzigste Problem ist, das man evtl. mit readfile jede Datei aufrufen kann die bei mir auf dem Server liegt... das finde ich derzeit nicht so schön... jemand ne Idee? |
von subjective |
Naja nicht mehr als andere PHP-Seiten auch. Wenn man es etwas schöner machen will, sollte man die einzelnen Dateien stückchenweise rausschicken (flush). Wobei das allerdings nicht funktioniert, wenn trans-sid aktiv ist.
Das Problem bei der Authentifizierung über den Webserver selbst (siehe NetDrag), ist die Kompatibilität. Es funktioniert nur, wenn PHP als Modul im Apache läuft. |
von languitar |
Zieht das nicth eigentlich gut Serverreserven? |
von subjective |
Du mußt halt _alle_ Requests (auch die Downloads) über ein PHP-Script abwickeln. Die Datieen, welche zum Doanload angeboten werden sollen, legst du in ein Verzeichnis außerhalb des Document-Root oder eines das du per .htaccess komplett blockst.
PHP-Scripte auf dem Server greifen direkt auf das Dateisystem zu, sind also von der Blockade nicht betroffen. Ein solches PHP-Script dient dann als Wrapper für den Download.
download.php?file=foo.zip
In dem Wrapper prüfst du dann erstmal das Login und gibst dann die Datei aus. Vorher solltest du passende HTTP-Header schicken, damit der Browser mitbekommt, dass es sich um einen Download handelt. |