Puoi disabilitare il "file listing" dalla cartella sul server (fruga tra le impostazioni del server web) e magari dare anche dei nomi fittizi ai files su quella cartella, nomi che non siano identici al nome del file che apparirà all'utente durante il download.
La funzione che ho scritto permette di impostare due nomi di file, in particolare questi parametri:
$file_name_user: è il nome di file che apparirà all'utente dopo aver scaricato il documento.
$file_name: è il nome e path reale del file sul server, che può anche essere diverso dal parametro precedente.
Ora non so in che modo gestisci i files da scaricare, se con un database di supporto oppure semplicemente uploadando i files in quella cartella ma senza registrare il nome, comunque puoi dare al file sul server un nome codificato generato in automatico (es.: anno-mese-giorno-ore-minuti-secondi-numerocasuale.est per essere sicuro che non venga generato un nome di file gia presente, che causerebbe la sovrascrittura del vecchio file).
Se invece i files non li gestisci con una tabella di supporto e non puoi creare nomi di file automatici registrando anche la corrispondenza tra il nome del file sul server ed il nome del file in chiaro che l'utente vedrà, puoi semplicemente aggiungere una stringa fissa all'inizio di ogni nome di file.
Ad esempio, se il file da scaricare si chiama "mio_file.txt" puoi uploadarlo sul server come "download_mio_file.txt"; quando esegui la funzione di scaricamento sai che il file in questione è "download_mio_file.txt", e per ottenere il nome definitivo non devi fare altro che togliere la parte "download_" dal nome di file sul server...
In questo modo, anche se l'utente dovesse risalire all'url della cartella dove risiedono i files:
1. il listing è disabilitato quindi non può vedere i files presenti;
2. comunque sia, l'utente non può sapere che il nome reale del file sul server è "download_mio_file.txt" considerando che lui ha scaricato "mio_file.txt"
Questa è una soluzione che mi è venuta in mente adesso, dovrebbe essere funzionale.
Ciao.