Post

Apache – un primo esempio pratico

In Senza categoria on ottobre 22, 2009 by poyblog

Per non rendere troppo noiosa la lettura degli articoli relativi ad Apache ho deciso di inserire ogni tanto degli esempi pratici di utilizzo per rendere più comprensibili alcuni aspetti relativi alla configurazione del servizio.

Partiamo da un problema noto, e poi in base alle conoscenze acquisite cerchiamo una soluzione efficace.

Problema: Ho un sito web http://vendolibri.com tramite il quale voglio condividere alcuni documenti solo a utenti autenticati e quindi riconosciuti.

Il mio sito è in grado di riconoscere ed autenticare internauti, il fatto sta che tutti i miei documenti stanno all’interno della cartella http://vendolibri.com/private/ .

La scelta è obbligata, non posso inserire direttamente i testi nel database perché sarebbe troppo oneroso in termini di risorse sprecate, devo per forza depositarli su uno spazio web sottostante al dominio vendolibri.com.

Soluzione: La soluzione adottata in questo caso è quella di rendere la cartella private non visibile, ma permettendo il download del file tramite script php solo a quegli utenti riconosciuti.

Tutto questo è possibile con poche righe nel file di configurazione, VirtualHost o configurazione generale che sia.

Dettagli file di configurazione:

<Directory /var/www/vendolibri/private>

Order Allow,Deny

Deny from all

</Directory>

In questo caso se volessi scaricare il testo ciao.txt, tramite la pagina web http://vendolibri.com/private/ciao.txt

Otterrei un access denied, ma se eseguissi la pagina

http://vendolibri.com/admin/download.php

(accessibili solo tramite autenticazione php) otterrei il file ciao.txt.

Ecco il codice sorgente della pagina download.php

<?php

$file = ‘/private/ciao.txt’;

if (file_exists($file)) {

header(‘Content-Description: File Transfer’);

header(‘Content-Type: application/text’);

header(‘Content-Disposition: attachment; filename=’.basename($file));

header(‘Content-Transfer-Encoding: binary’);

header(‘Expires: 0′);

header(‘Cache-Control: must-revalidate, post-check=0, pre-check=0′);

header(‘Pragma: public’);

header(‘Content-Length: ‘ . filesize($file));

ob_clean();

flush();

readfile($file);

exit;

}

?>

Lascia un Commento

Fill in your details below or click an icon to log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Log Out / Modifica )

Foto Twitter

You are commenting using your Twitter account. Log Out / Modifica )

Foto di Facebook

You are commenting using your Facebook account. Log Out / Modifica )

Connecting to %s

Iscriviti

Get every new post delivered to your Inbox.