Bloquer un téléchargement

Résolu
superchinois Messages postés 64 Date d'inscription vendredi 14 décembre 2001 Statut Membre Dernière intervention 19 juin 2010 - 8 nov. 2007 à 00:07
superchinois Messages postés 64 Date d'inscription vendredi 14 décembre 2001 Statut Membre Dernière intervention 19 juin 2010 - 8 nov. 2007 à 12:19
Salut à tous

   Je n'ai pas d'idée concernant la façon de procéder pour un système que je veux mettre en place : je voudrais que lorsque mon utilisateur est connecté (avec variables de session), il ne puisse télécharger qu'une seule fois un fichier zip présent sur www.mondomaine.com/monzip.zip, avec donc les contraintes suivantes :

- S'il ne s'est pas authentifié : pas d'accès au téléchargement
- Si authentifié mais pas encore téléchargé : accès au téléchargement
- Si authentifié et déjà télécharger une fois : pas d'accès au téléchargement.

Voilà j'espère avoir été clair, j'attends vos propositions avec impatience. Merci à tous...

Attention à Astérix, mon Pitt Bull

4 réponses

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
8 nov. 2007 à 11:50
Salut,

Pour envoyer le contenu du fichier au navigateur : http://www.php.net/manual/fr/function.readfile.php
Pas besoin de fopen et tout le tremblement, cette fonction se charge de l'ouverture, de la lecture et de la fermeture du fichier ;)
3
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
8 nov. 2007 à 00:35
Salut,

Sans rentrer dans les détails techniques (je te laisse implémenter ça), voici comment je ferais :
- table membres dans ma base de données.
- table avec les téléchargements que je propose
- table de liaison membre-téléchargement
En gros, quand un membre a téléchargé le zip, j'enregistre dans la table de liaison l'id du membre et l'id du téléchargement.

Quand un membre veut télécharger un fichier, voici ce qui se passerait :
- vérification de la présence du couple (id_membre, id_téléchargement) dans la table de liaison
- si le couple n'est pas présent, je lui propose le téléchargement
- si le couple est déjà présent, c'est que ce membre a déjà téléchargé ce fichier. Je lui dit qu'il faut pas pousser mémé dans les orties et l'invite à composer le 0892..... à 250000 dollars la seconde pour y avoir accès une nouvelle fois

Le téléchargement doit pouvoir être contrôlé. Afficher un lien direct une fois ne dit pas que la personne l'aura téléchargé une fois, ni ne l'empêche de le télécharger plusieurs fois. Alors le lien est vers un script php qui prend en paramètre GET l'id du téléchargement.
Le script en question récupère dans la table des téléchargements le chemin du fichier à télécharger (le fichier peut ainsi ne pas être directement accessible depuis le net, soit parce qu'il n'est pas dans l'arborescence de publication, soit parce que le répertoire est protégé par un .htaccess contenant DENY FROM ALL. Le script php lit le fichier et le renvoie vers le navigateur. Avant de se terminer, il insère dans la table de liaison l'id du membre avec l'id du téléchargement. Ce qui fait qu'avec le même lien, si l'utilisateur clique à nouveau dessus, il se verra refuser le téléchargement.

Voilà dans les grandes lignes.
0
superchinois Messages postés 64 Date d'inscription vendredi 14 décembre 2001 Statut Membre Dernière intervention 19 juin 2010
8 nov. 2007 à 09:19
Re,

Merci pour l'info... la première partie ne me pose pas de problèmes, je l'avais imaginé ainsi. Mais la partie qui m'intérresse, c'est justement le "Le script php lit le fichier et le renvoie vers le navigateur"... je vois bien comment lire le fichier (fopen je pense), mais comment le rediriger vers le navigateur ? merci d'avance...

Attention à Astérix, mon Pitt Bull
0
superchinois Messages postés 64 Date d'inscription vendredi 14 décembre 2001 Statut Membre Dernière intervention 19 juin 2010
8 nov. 2007 à 12:19
Ouah trop violente comme fonction je connaissais pas :o)
Merci pour tout...

Attention à Astérix, mon Pitt Bull
0
Rejoignez-nous