downloads aus .htacces starten, ohne username/passwort zu zeigen/einzugeben

phoenixlord

Grünschnabel
Aaalso ich hab da mal a klaans problem. dazu erstmal die ordner-struktur:

/
/dl
/dl/protokolle
/dl/protokolle/.htaccess
/dl/protokolle/.htpasswd
/dl/protokolle/download.pdf
/dl/protokolle/index.html
/intern_protokolle.php

intern_protokolle.php:
durch eine session wird bestätigt, dass der user eingeloggt ist, und dass er runterladen darf.
die datei zieht danach die protokoll-daten aus der mysql-db und listet sie mit link auf z.B. eben die download.pdf

nu will ich aber die download.pdf quasi "direkt" downloaden und nicht jedesmal noch das passwort per hand eingeben müssen

da die intern_protokolle.php aufgrund des layouts auf gleicher ebene liegt, wie die restliche homepage, kann ich auch nicht direkt mit .htaccess arbeiten.


jetzt die grosse, alles-umfassende frage (nach dem leben, dem universum und dem ganzen rest): wie geht?


natuerlich hab ich mir da auch schon gedanken gemacht, z.B. hab ich versucht die $_SERVER[]-Variablen zu überschreiben (PHP_AUTH_USER und PHP_AUTH_PW) -> bringt nix, weil der server das ned uebernimmt, trotz
Code:
<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]
</IfModule>

ich könnte usernamen und passwort in die URL einbauen und per http://user:passwort@url/ arbeiten - unschön, das zeigt (a) das passwort an und sieht (b) aus wie ne notlösung, ausserdem kommen dann auch die leute noch an die dateien, die bereits keine zugangsberechtigung mehr haben




danke schonmal fuer eure hilfe ;)
 
Gib die Datei doch via PHP aus, dann mußt du nicht auf die Restriktionen in der .htaccess Rücksicht nehmen.
 
Wo hast du denn diese Information her? Du solltest dem Client natürlich schon mitteilen, welchen Dateityp er geliefert bekommt.
 
$a=fopen($File,'r');
fpassthru($a);

?

-- die info stammt aus nem php3-buch, is also irrelevant und warscheinlich falsch ;) --


edit: das wars ned, jetz krieg ich den quellcode von der pdf in der page ausgegeben *gnnnn*
 
Zuletzt bearbeitet:
Du musst, bevor du die Datei ausgibst, noch den entsprechenden Content-Type-Header senden, damit der Browser weiss, was da ankommt.

Code:
<?php
header ("Content-type: application/pdf");
readfile($File);
//Fertig
?>
 
umh....

soll heissen: ich muss ne _blank aufmachen mit effektiv nix drin, ausser if(isset($_SESSION["login"] && ...) { # header senden, file ausgeben }

... sieht haesslich aus, laesst sich des ned umgehen?
 
Zurück