Usare email come nomi di directory è rischioso: un indirizzo potrebbe contenere caratteri come . e / e creare grossi problemi. Puoi sostituirli, ma due utenti potrebbero iscriversi con indirizzi molto simili, e finire nella stessa directory.
Alternativamente, puoi usare un hash dell'indirizzo, che dovrebbe essere unico (e.g., sha1()), o complicare il sistema con id o nomi per gli utenti, etc. (più flessibile, ma più complesso).
Se aggiungi del "sale" all'hash, diventa più facile tenere le directory dei vari utenti nascoste al pubblico:
Codice PHP:
# Se conosco l'email posso scovare la directory
$hash_liscio = sha1($email);
# Finché il $segreto resta segreto, è difficile indovinare la directory
$segreto = "...";
$hash_più_sicuro = sha1($segreto . $email);
Detto questo, al tuo sistema di registrazione andrà affiancato un sistema di login. Quando l'utente si logga, puoi salvarne l'email nella sessione (vedi sessioni in PHP), e quando ti serve il percorso di un file aggiungi il prefisso corrispondente all'utente.
Codice PHP:
$directory_utente = sha1($segreto . $_SESSION['email']);
$tutti_i_pdf = glob("dati_utenti/{$directory_utente}/*.pdf");
-------
Ipotetici passi successivi che mi vengono in mente, ma non sono necessari:
- raccogli il codice che crea le directory e ti dice dove trovare i file in una classe, che prende l'email come parametro, così la funzionalità è in posto solo;
- passi anche il segreto come parametro di questo classe, così puoi tenerlo al sicuro in un file di configurazione, fuori dal codice.
- è saggio che un file di configurazione abbia un nome che comincia con ., per rimanere nascosto al pubblico.