2010-11-28 28 views
1

Je souhaite distribuer des fichiers confidentiels à des utilisateurs authentifiés et autorisés. La partie PHP fonctionne bien, et actuellement le script PHP affiche le contenu du fichier avec les types de contenu appropriés. Cependant, certains fichiers sont vraiment volumineux, donc j'aimerais que le démon HTTP fasse le processus de diffusion et que je "demande" d'abord à PHP si l'utilisateur peut obtenir le fichier. Comment ferais-je cela?Servir les téléchargements avec Apache/lighttpd via le schéma d'authentification et d'autorisation de PHP?

Répondre

2

Pour lighttpd: http://redmine.lighttpd.net/wiki/1/X-LIGHTTPD-send-file

Pour mod apache aditional est nécessaire: https://tn123.org/mod_xsendfile/

utilisation sera comme ceci:

$status = authorization(); 

if($status){ 
    $file = '/tmp/bigfile.dat'; 
    header("X-Sendfile: $file"); 
    header("Content-type: application/octet-stream"); 
    header('Content-Disposition: attachment; filename="'.basename($file).'"'); 
} 

Si vous utilisez Apache, assurez-vous tournez aussi XSendFile dans votre Configuration Apache. Sinon, vous allez servir des fichiers vides. Par exemple:

<Directory /var/www/> 
    Options Indexes FollowSymLinks MultiViews 
    XSendFile on 
    AllowOverride All 
    Order allow,deny 
    allow from all 
</Directory>