Io con la sessione ricavo l'user, verifico i suoi file dal database e dopo tramite echo stampo:
Codice:
<a href="documenti/utente_a.pdf">Documento a</a>
(logicamente il percorso sarà una variabile ricavata dal db) e così via per tutti i suoi file.
Così facendo non sai usando la pagina proxy, stai mostrando il collegamento diretto al documento (che non dovrebbe essere raggiungibile, nemmeno per il proprietario). Il codice sarebbe piuttosto qualcosa come:
Codice HTML:
<a href="documenti/proxy.php?document=utente_a.pdf">Documento a</a>
Sarà la pagina proxy a verificare che l'utente abbia il permesso accedere al file.
proxy.php(n pseudocodice):
Codice PHP:
<?php
$documento_richiesto = $_GET['dcoument'];
$utente_corrente = $_SESSION['user_id'];
// Se l'utente ha diritto di accesso sul documento, gli viene mostrato
if (has_access($utente_corrente, $documento_richiesto)) {
header('Content-type: pdf...');
echo file_get_contents(...);
}
// Se l'utente non ha il diritto di accesso al documento, un messaggio d'errore gli viene mostrato
else {
echo "Errore: questo utente non può accedere al file richiesto";
}
?>
dove il predicato has_access indica se l'utente può accedere al documento. Puoi realizzarla tramite interrogazione al database, per esempio.
In questo modo, usando un URL forgiato o contraffatto, la pagina proxy impedisce la visualizzazione del documento.