Ich weiss ja nicht, wie viele Benutzer es mal geben soll.
aber im Prinzip kannst Du mit htaccess wie folgt vorgehen:
(im Folgenden sei '/var/www/' Dein Document-Root:
#file /var/www/upload/.htaccess
AuthType basic
AuthName "upload"
AuthUserFile /var/www/noaccess/.htpasswd
Require valid-user
DirectoryIndex index.php
und:
<?php
# file: /var/www/upload/index.php
if (isset($_SERVER['PHP_AUTH_USER']) {
header('Location: http://DEINHOST/upload/'.$_SERVER['PHP_AUTH_USER']);
}
?>
#file /var/www/upload/User1/.htaccess:
AuthType basic
AuthName "upload"
AuthUserFile /var/www/noaccess/.htpasswd
Require user User1
#file /var/www/upload/User2/.htaccess:
AuthType basic
AuthName "upload"
AuthUserFile /var/www/noaccess/.htpasswd
Require user User2
Ganz andere Lösung:
Eine völlig eigene, in php geschriebene Lösung kannst Du mit mod_rewrite einsetzen, wenn Du etwa wie folgt vorgehst:
#file /var/www/.htaccess
RewriteEngine on
# Reihenfolge ist wichtig:
RewriteRule ^/uploads/(.*)/hochladen$ /var/www/hochladen.php?dir=$1 [L]
RewriteRule ^/uploads/(.*)$ /var/www/upload-dirs.php?p=$1 [L]
Jetzt behandelt die upload-dirs.php jeden Request innerhalb von /var/www/uploads.
Die hochladen.php behandelt jeden Request der zum Upload führen soll.
HINWEIS:
Schalte jegliches CGI/PHP ab! Ein hinreichend sicherer Weg wäre, die von den Benutzern hochgeladenen Dateien prinzipiell mit einer eigenen Endung zu versehen oder den Dateiname z.B. mit md5() zu neutralisieren und den sowie die ursprünglichen Dateinamen in einer eigenen Ressource zu speichern - die dann gleich zum "Verzeichnislisting" dient. Ausliefern beim Downlad mit dem via header('Content-Type: application/unknown')
- Das ließe sich auch verfeinern, in dem z.B. für PDF der korrekte Typ gesendet wird.
Falls das nicht gemacht werden soll:
* Eine der zahlreichen Möglichkeiten, die Authorisierung vornehmen zu lassen findet sich dann auf php.net
* Selbstredend gibt es in PHP auch genügend Möglichkeiten Verzeichnis-Listings nach eigenem Gustus zu erzeugen.
Noch etwas: Wenn Deine Benutzer virulentes Zeug hochladen "haftet" bei Google Deine gesamte Domain... Es wäre insofern also klug, eine eigene Subdomain zu verwenden.
"haftet" bei Google Deine gesamte Domain