protection du contenu d'un dossier [resolu]

Nouveau WRInaute
j'ai lu tout les posts qui parlent de ce sujet sans y trouver mon bonheur
je souhaite interdire le contenu d'un dossier du type "/dossier/01.rar"
... /dossier/XX.rar
de sorte que personne ne puisse telecharger le contenu en tapant directement le lien dans son navigateur.
par contre je souhaiterais qu'un script php ait le droit de proposer un des fichier en téléchargement.
en fait je propose du contenu payant, et je souhaiterais autoriser le téléchargement après paiement.
 
WRInaute occasionnel
Bonsoir,

Un fichier .htaccess est tout indiqué pour mettre en place une restriction d'accès à un répertoire.

Je n'ai pas de code type sous la main mais google (ou un membre de wri) te le donnera :wink:
 
WRInaute accro
karak a dit:
Je n'ai pas de code type sous la main mais google (ou un membre de wri) te le donnera :wink:

Waouuuu !!!

Et voilà :D

Code:
Options +FollowSymlinks
RewriteEngine On
#Empêche l'execution de ces types de fichiers depuis l'exterieur
#autorise l'acces au fichier par script php
#Renvoie une erreur 404 si de tels fichiers sont demandés
RewriteRule ^.*\.rar$ /foo [F]
RewriteRule ^.*\.RAR$ /foo [F]
RewriteRule ^.*\.Rar$ /foo [F]
RewriteRule ^.*\.RaR$ /foo [F]
 
Nouveau WRInaute
merci beaucoup à toi KOogar je teste ça dessuite

le script php à pas le droit d'y accéder :
You don't have permission to access

mon code est : <a href="/telechargements/".$pack.".rar">lien</a>
ça devrait pas poser de soucis
 
Nouveau WRInaute
je resoud le problème

il faut faire ça c tout bête :

$url=$pack.".rar";
header('Content-Description: File Transfer');
header('Content-Type: application/force-download');
header("Content-Disposition: attachment; filename=\"".basename($url)."\";");
header('Content-Length: ' . filesize($url));
@readfile($url) OR die();

encore merci de ton aide KOogar
 
WRInaute passionné
Attention un readfile() sur des fichiers lourds, si vous êtes sur un hébergeur mutualisé, va provoquer la crise cardiaque du serveur !
Ca m'est arrivé chez OVH avec un .zip de 50 Mo qui a eu plusieurs centaines de téléchargements dans un temps court... mon compte a été désactivé le temps que je "corrige la faille" (dixit OVH).
 
WRInaute accro
Son code sert avant tout a forcer le telechargement d'un fichier. Le htacess etait plus adapter a sa demande. ca etant si le serveur limite en ressource, il peut toujours utiliser file_get_contents() à la place de readfile(). Le script plantera au bout de 30 secondes. break;
 
Discussions similaires
Haut