Crei un sistema di autenticazione basato su database e sessioni
Crei un sistema di upload dei file
Carichi i file fuori dalla document root o in una cartella protetta da .htaccess o simili
Crei un sistema per associare ad ogni utente i relativi file (es. una tabella)
Crei uno script a cui passi il file da scaricare e questo verifica se l'utente può scarciarlo ed in caso affermativo lo manda al client (es. header() + readfile() etc.)