Originariamente inviato da cpoinelli
Ciao,
ho già affrontato il problema, ed ho anche descritto nel dettaglio le operazioni da compiere a questo indirizzo:
http://poyblog.wordpress.com/2009/10...sempi-pratico/
Nel caso pratico descritto al link sopra indicato viene protetta da visualizzazione una cartella contente file testuali.
La medesima cosa la si può compiere con le immagini.
Ti riassumo i passi necessari:
- primo, proteggere da lettura la cartella contente le immagini. Per fare questo è necessario creare nel file di configurazione del virtual host le seguenti voci:
<Directory /var/www/immagini>
Order Allow,Deny
Deny from all
</Directory>
dove per /var/www/immagini si intende la cartella dove sono ospitate tutte le immagini.
A questo punto se riavvii apache noterai che la cartella immagini non è più navigabile (
http://sito/immagini), e così pure la pagina del sito (index.html) che utilizza il tag img per visualizzare l'immagine ([img]./immagini/immagine.jpg[/img]) non sarà in grado di visualizzare l'immagine.
- secondo. La soluzione in questo caso è creare una pagina php n grado di visualizzare l'immagine ed inserire poi questa come valore src dell'immagine; di seguito i dettagli.
Crei una pagina php nominata img.php così compilata:
<?php
if (isset($_GET['imgpath'])){
$imagepath=$_GET['imgpath'];
$image=imagecreatefromjpeg($imagepath);
header('Content-Type: image/jpeg');
imagejpeg($image);
}
?>
Tale pagina non fa altro che prendere in input ($_GET) il percorso dell'immagine e visualizzarlo. Perchè tale file funzioni devi aver installato il motore php e abilitato il modulo php-gd (su ubuntu apt-get install php5-gd)
Ultima raccomandazione la funzione imagejpeg è per immagini jpeg, esistono anche le funzione per png, gif etc..
- terzo. Modificare la pagina index, o le pagine che richiamano le immagini sostituendo i tag img vecchi:
[img]./immagini/immagine.jpg[/img]
con
[img]img.php?imgpath=immagini/immagine.jpg[/img]
Il gioco è fatto, con navigazione html apache blocca l'accesso alle immagini, ma php è comunque in grado di mostrarle.