Nascondere percorso risorse

Pubblicità

CCT92

Nuovo Utente
Messaggi
62
Reazioni
4
Punteggio
26
Salve a tutti. Sto creando un sito con l'ausilio di Zend Framework, su tale sito gli utenti registrati possono visualizzare alcuni tipi di file (immagini, pdf e altro). Per ora essi, se visualizzano il codice HTML della pagina, possono ovviamente vedere il percorso dei file all'interno del mio filesystem. Voglio evitare che essi possano, magari tramite una pagina php (un controller magari visto che sto usanto ZF) che elabori le richieste ai file e restituisca gli stessi. O magari c'è qualche altro modo per farlo e io non lo conosco.
Magari posso usare questa funzione: PHP: file_get_contents - Manual, ma non so se può funzionare.
Un esempio di quello che voglio fare è:
Codice:
<img src="url_del_controller/id_del_dile">
e il controller restituisce il file al tag img. Altrimenti non saprei come fare... suggerimenti?
 
Salve a tutti. Sto creando un sito con l'ausilio di Zend Framework, su tale sito gli utenti registrati possono visualizzare alcuni tipi di file (immagini, pdf e altro). Per ora essi, se visualizzano il codice HTML della pagina, possono ovviamente vedere il percorso dei file all'interno del mio filesystem. Voglio evitare che essi possano, magari tramite una pagina php (un controller magari visto che sto usanto ZF) che elabori le richieste ai file e restituisca gli stessi. O magari c'è qualche altro modo per farlo e io non lo conosco.
Magari posso usare questa funzione: PHP: file_get_contents - Manual, ma non so se può funzionare.
Un esempio di quello che voglio fare è:
Codice:
<img src="url_del_controller/id_del_dile">
e il controller restituisce il file al tag img. Altrimenti non saprei come fare... suggerimenti?

Puoi creare un file php che funge da "risorsa universale", passandogli come paramento una qualsiasi cosa che richiami alla risorsa da te desiderata, esempio:
PHP:
$risorsa = trim($_GET['risorsa']);

$lista = array(
'immaginedelcane' => '/immagini/anno-scorso/cani.jpg',
'filecss' => 'grafica/stile.css',
# eccetera...
);

header('Content-Type: image/png');
readfile($lista[$risorsa]);
In questo modo, tu chiamando questo file php come esempio.php?risorsa=immaginedelcane, è come se chiami il file /immagini/anno-scorso/cani.jpg, senza far sapere all'utente dove si trova esattamente il file.
Attento però ad impostare il corretto Content-Type, potresti fare un altro vettore per questo o rilevarlo in base al singolo file che chiami.


Ciao
 
Puoi creare un file php che funge da "risorsa universale", passandogli come paramento una qualsiasi cosa che richiami alla risorsa da te desiderata, esempio:
PHP:
$risorsa = trim($_GET['risorsa']);

$lista = array(
'immaginedelcane' => '/immagini/anno-scorso/cani.jpg',
'filecss' => 'grafica/stile.css',
# eccetera...
);

header('Content-Type: image/png');
readfile($lista[$risorsa]);
In questo modo, tu chiamando questo file php come esempio.php?risorsa=immaginedelcane, è come se chiami il file /immagini/anno-scorso/cani.jpg, senza far sapere all'utente dove si trova esattamente il file.
Attento però ad impostare il corretto Content-Type, potresti fare un altro vettore per questo o rilevarlo in base al singolo file che chiami.


Ciao
Grazie mille per la risposta. Ho due domande, giusto per capire se fa al caso mio:
Questo procedimento lo poso fare con qualsiasi tipo di file?
Se facessi <img src="esempio.php?risorsa=immaginedelcane"> esso funzionerebbe traquillamente?
Ho provato, ma non funziona. Se apro la pagina php mi visualizza una pagina bianca, con un quadratino, come se non riuscisse a trovare l'immagine.
 
Ultima modifica:
Grazie mille per la risposta. Ho due domande, giusto per capire se fa al caso mio:
Questo procedimento lo poso fare con qualsiasi tipo di file?
Se facessi <img src="esempio.php?risorsa=immaginedelcane"> esso funzionerebbe traquillamente?
L'importante che specifichi che vuol dire "immaginedelcane" e che specifichi il giusto Content-Type, io te l'ho scritto per un'immagine png, ma varia per ogni tipo di file.


Ciao
 
L'ho fatto, ma continua a non funzionare. Se apro la pagina php mi visualizza una pagina bianca, con un quadratino, come se non riuscisse a trovare l'immagine.
 
Il tuo codice funzionava bene, sbagliavo io. Avevo unserito un Var_dump che mi comprometteva tutto. Adesso provo con altri formati oltre alle immagini.

- - - Updated - - -

Non riesco a farlo funzionare con gli epub.
PHP:
					header('Content-type: application/epub+zip');					readfile($dir);
Eppure il codice è uguale a prima e la cartella è giusta.
 
Dato che gli ePub sono documenti in formato xml, puoi provare con:
PHP:
header('application/xml');
o con:
PHP:
header('text/xml');


Ciao
 
Dato che gli ePub sono documenti in formato xml, puoi provare con:
PHP:
header('application/xml');
o con:
PHP:
header('text/xml');

Ciao
Grazie per la pazienza, ma non funziona.
Sto provando a far funzionare questo codice:

var Book = ePub("url_al_controller/id_del_file", { restore: true });
Il controller dovrebbe restituire il file tramite gli header. Per renderizzare l'epub sto usando: https://github.com/futurepress/epub.js. Non so davvero cos'altro fare.

- - - Updated - - -

Con questo header: header('Content-type: application/epub+zip'); riesco a scaricare un file senza estensione. Se lo apro con un archivio vedo che è proprio il file cerco di far aprire, quindi il percorso è giusto. Possibile che non funzioni questo header?
 
Se vuoi farlo scaricare il file invece di visualizzarlo allora devi fare così:
PHP:
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="libro.epub"');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: '.bindec(decbin(filesize($lista[$risorsa]))));

readfile($lista[$risorsa]);


Ciao
 
Nono, non voglio farlo scaricare, ma il file mi scarica comunque un file senza estensione. Se però lo apro con win rar vedo chiaramente che si tratta del file epub che voglio io. Solo che non lo ritorna come faceva con le immagini.
 
Io fino ad oggi non sapevo nemmeno cosa sono gli epub, se non va, puoi trovare una strada alternativa a PHP, cioè il mod_rewrite di Apache.


Ciao
 
Pubblicità
Pubblicità
Indietro
Top