So viel gibts da nicht zu diskutieren.
Computer Freak hat die Lösung schon lange gebracht, dass mit dem htaccess ist gleichzeitig absolut simpel und sicher.
EDIT:
Ah, ich habs mir grad nochmal überlegt. Vermutlich habt ihr gar nicht verstanden wie man sowas eigentlich machen müsste mit htacess, als ihr gemeint habt es sei 'unkonfortabel' weil man dann ja nochmal einloggen müsste. Das muss man nicht!
Der Trick dabei ist, dass die PHP Datei den Download aus dem geschützten Verzeichnis aufruft. Da die PHP Datei selbst auf dem Server liegt, hat sie die Berechtigung Dateien aus dem geschützten Bereich aufzurufen. Dabei muss der User KEIN htaccess Passwort eingeben da die PHP Datei dies für ihn umgeht. (Würde er hingegen ohne die PHP Datei auf die Datei zugreiffen wollen, dann würde er am htaccess scheitern da er im gegensatz zur PHP Datei da ja nicht einfach drauf zugreiffen darf.
Hier mal ein Beispiel, welches auf demjenigen von Revontulet beruht, jedoch das mit dem htacess beinhaltet:
PHP:
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=\"datei.exe\"");
$file = "verzeichnis/datei.exe";
readfile($file);
Zeile 1 sagt: Was jetzt kommt muss gedownloadet werden.
Zeile 2 sagt: Der Name desjenigen ist datei.exe (dabei ist es egal wie das File auf dem Server heisst... das File kann auf dem server mickey.mp3 heissen und trotzdem als donald.exe zum download gesendet werden...)
Zeile 3 definiert die variable die den Pfad zur wirklichen Datei enthält. der Verzeichnis muss hierbei Passwortgeschützt sein (darin besteht ja der Trick)
Zeile 4 sendet dann das File aus dem Passwortgeschützten Bereich unter Umgehung des htaccess Schutzes zum User der es downloaden kann.
Diese Methode hat folgende Vorteile:
1. Der User wird den Pfad zur Datei nicht kennenlernen (statdessen nur den zum PHP File)
2. Auch wenn der Pfad bekannt wäre, könnte die Datei nciht heruntergeladen werden (bzw. halt nur über die PHP Datei für die man ja eingeloggt sein muss)