Tant que la session ne l'autorisera pas, il sera impossible de télécharger le fichier ZIP (quoi que l'internaute puisse en penser).
Ce code source a été imaginé suite à la visite d'un gros site de m***e qui mettait 5 minutes d'attente (édulcorées de publicités bien sûr) pour des fichiers qui ne font 200 ko. En tapant le nom du fichier en guise d'URL, on était redirigé vers pire encore.
Le principe de ce système est le suivant:
1) Il faut dire à Apache que les ZIP sont des fichiers PHP, quitte ensuite à modifier le Header. Le HTACCESS s'en charge.
2) Il faut sécuriser les fichiers ZIP envoyés sur le serveur. Pour cela, on utilise SECURE_FILE.PHP: on tape son nom (ex: 02.zip) et on poste le fichier. Le script insère en début et fin de fichier des commandes PHP, et stocke le fichier dans un répertoire spécifique. Le début vérifie l'autorisation de téléchargement par une session, et la fin efface la permission.
3) Si on tape l'URL du fichier, on est redirigé sur l'accueil par le début. Si on est autorisé, on récupère le fichier et on efface l'autorisation de la session. Après téléchargement, le fichier ZIP est tel qu'il était avant d'être sécurisé par le serveur.
4) Même en étant sécurisé sur le serveur, l'expérience montre que le fichier n'est pas corrompu et qu'il peut toujours être décompressé par WinZip. En revanche, il ne peut plus être modifié.
Au final, voici une protection bien sympathique. Tout dépend après si on veut faire patienter l'internaute...
Conclusion :
Vous pouvez toujours aller visiter
http://altert.family.free.fr/
3 juin 2008 à 19:59
31 août 2005 à 13:58
d'ailleurs sur certains serveurs il faut rajouter Options+FollowSymlinks
avant le RewriteEngine à on
31 août 2005 à 11:16
et tu peux aussi le faire a partir des erreurs 404 : renvoyer vers un script php.
30 août 2005 à 17:00
RewriteRule ^[a-z-A-Z0-9\-_]*.zip$ /telechargement.php?fichier=$1.zip
et hop ;-)
30 août 2005 à 16:55
Compare donc ces deux actions PHP :
http://domain.com/pour_toi_anthomicro.zip
http://domain.com/protected.php?file=pour_toi_anthomicro.zip
C'est sur le premier que tu as envie de cliquer. Et pourtant, tu peux pas le récupérer si je rajoute des entêtes et pieds-de-page en PHP.
Naturellement, si tu as 2000 fichiers ZIP, là tu forces le download avec une page PHP couplée à un .HTACCESS
PS: "http://domain.com" est un nom choisi du hasard pour illustrer l'exemple
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.