Lien de téléchargement protégé

Eléphanteau du PHP | 41 Messages

13 août 2011, 20:55

Bonjour,

J'ai un executable très sensibles que je ne veux donner qu'à certains membres et j'aurais voulu faire le système suivant :
1) après une certaine action, le lien est envoyé à l'utilisateur
2) Une fois qu'il va sur le lien, il télécharge l'executable
3) Le lien reste actif pendant 24h, au delà le lien est supprimé et le fichier ne sera plus accessible (j'utiliserai un cron). De cette manière il ne peut plus le retelecharger sans une nouvelle autorisation

Le truc c'est que mon executable est plutot gros et que je ne veux pas faire 115 copies de ce fichier avec des noms différents. Y a-t-il un moyen astucieux de regler ce problème ?

Merci pour votre aide

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

14 août 2011, 12:35

salut,

Je dirais que le plus simple c'est faire une table qui contient l'id de l'utilisateur et un "hash" unique (genre md5(time().'username') histoire d'être sur de l’unicité de la chose si tu a deux gus qui font la demande en même temps à la même seconde).

Tu envoie un lien par mail du style tonsite.com.telechargement.php?dl=lehashquiestdanslatable

quand le gars clique sur le lien il arrive sur la page telechargement.php
- Vérification de la présence du hash dans la table, vérification du fait que l'utilisateur associé au hash est autorisé à télécharger le fichier.
- envoie du fichier au navigateur grâce à la fonction header ensuite suppression de la table du tuple correspondant comme ça si le gars utilise le même lien ça marche pas :)


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 41 Messages

14 août 2011, 21:27

OK merci parce que j'ai une partie de ma réponse mais ce qui me gène c'est qu'avec ta méthode il est possible de récupérer le lien direct vers le fichier car le header fait une redirection d'adresse.
Du coup, si ce visiteur passe le lien direct à son copain, il n'aura plus à passer par la procédure.
Est ce qu'on peut faire quelque chose pour ça ?

Eléphanteau du PHP | 41 Messages

15 août 2011, 16:59

Je crois que la seule solution reste de copier le fichier avec un autre nom quoiqu'on fasse, non ?

Eléphant du PHP | 343 Messages

15 août 2011, 21:17

Non, tu fais un système d'identification, si le membre peut télécharger, tu donnes accès au fichier sinon tu bloques.
Dans une table tu mets le membre qui a le droit et combien de temps tu donnes accès au lien.
Tu vérifies si le membre est dans la table et que la date de maintenant est incluse dans le délai autorisé. Rien de bien plus compliqué ;)
Développeur web

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 août 2011, 21:26

OK merci parce que j'ai une partie de ma réponse mais ce qui me gène c'est qu'avec ta méthode il est possible de récupérer le lien direct vers le fichier car le header fait une redirection d'adresse.
Du coup, si ce visiteur passe le lien direct à son copain, il n'aura plus à passer par la procédure.
Est ce qu'on peut faire quelque chose pour ça ?

Non a tu regarder les exemples de la doc ? particulièrement celui ci qui te montre comment envoyer au navigateur sans en donner le nom.

Qui plus est avec la solution que je t'indique le lien n'est valable qu'une seule fois. c'est bien que tu souhaite ? (après sont dl merde il redemande un accès).

cela n’empêchera que partiellement la copie car dès que quelqu'un la il pourra le redistribuer s'il le souhaite :mrgreen:


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 41 Messages

15 août 2011, 22:23

Super cet exemple est ce que je cherchait. Merci