Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1480 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  envoyer lien download ds mail

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

envoyer lien download ds mail

n°2036306
totoluc
Posté le 16-11-2010 à 14:20:22  profilanswer
 

Bonjour
 
Après de nombreuses recherches je n'arrive pas à savoir comment faire la chose suivante.
Lorsqu'un utilisateur a payé sur un site, lui faire parvenir un mail dans lequel il trouvera un lien de download vers un fichier (mp3, pdf, zip...).
Je sais envoyer un mail en php. Mon souci principal concerne la sécurité, la disponibilté du fichier. Je souhaite qu'il soit le seul à pouvoir télécharger le fichier.  
- Je souhaite pouvoir limiter dans le temps son accès au fichier : 1 semaine par exemple. Comment ne pas devoir enlever physiquement le fichier du serveur ?  
- comment éviter que le client envoie mon lien à un robot chinois, ou plutot comment éviter qu'un autre se serve du lien.  
C'est bête, ça se fait sur tous les sites marchands, mais je trouve pas comment faire. Il doit y avoir des procédures plus employées que d'autres... Si vous avez une piste, un script, histoire que que je ne mette pas 1 mois à réinventer le for-next.
Toute idée ou suggestion est bienvenue.
Merci

mood
Publicité
Posté le 16-11-2010 à 14:20:22  profilanswer
 

n°2039350
vladvad
Posté le 01-12-2010 à 01:06:44  profilanswer
 

Hello totoluc, figure toi que je me pose exactement la même question au même moment que toi ...
 
Donc je n'ai pas encore la réponse mais l'union (des ignorants) fait la force ...

n°2039366
flo850
moi je
Posté le 01-12-2010 à 09:31:05  profilanswer
 

tu envois un lien de type  

Code :


avec QIGHEROBGQER43TRFQBN qui est une clé générée dynamiquement ( exemple md5(time().' '.$nomFichier.' '.$idUser .... )  
Tu as une table avec les champs cle, nomfichier, iduser, datedegeneration,.....
 
 
lorsque la personne clique sur ce lien, il arrive donc a une page dl.php
1/ tu vérifié que la clé existe  
2/ tu vérifie qu'elle est encore valide ( nombre de téléchargement, date, .... )  
3/ tu recherches le fichier associé en base  
4/ tu li le ficheir ( stocké dans un repertoire non accessible directement) et tu l'envoies au navigateur, avec readfile par exemple

n°2039735
aideinfo
Posté le 02-12-2010 à 19:26:53  profilanswer
 

Ouais, mais lors du téléchargement, il va récupérer le chemin réel du fichier et va pouvoir le diffuser ou le télécharger quand il souhaite. Le seul moyen est une copie à un endroit spécifique et temporaire, ou un réécriture de l'url avec des variables pour empêcher la localisation du fichier.


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
n°2039741
flo850
moi je
Posté le 02-12-2010 à 20:20:40  profilanswer
 

non, le seul lien qu'il aura c'est celui que j'ai donné un peu plus haut qui ne donne qu'un accès indirect au fichier

n°2039770
vladvad
Posté le 03-12-2010 à 03:40:23  profilanswer
 

flo850 a écrit :

tu envois un lien de type  

Code :


avec QIGHEROBGQER43TRFQBN qui est une clé générée dynamiquement ( exemple md5(time().' '.$nomFichier.' '.$idUser .... )  
Tu as une table avec les champs cle, nomfichier, iduser, datedegeneration,.....
 
 
lorsque la personne clique sur ce lien, il arrive donc a une page dl.php
1/ tu vérifié que la clé existe  
2/ tu vérifie qu'elle est encore valide ( nombre de téléchargement, date, .... )  
3/ tu recherches le fichier associé en base  
4/ tu li le ficheir ( stocké dans un repertoire non accessible directement) et tu l'envoies au navigateur, avec readfile par exemple


 
Salut flo850  :hello:  
 
Ca a l'air nickel comme technique mais je ne suis pas au top niveau codage php ... Tu aurais un lien vers un tutoriel ou plus de détails ?
 
Merci beaucoup !!!  :)  

n°2039777
flo850
moi je
Posté le 03-12-2010 à 08:12:36  profilanswer
 

non , désolé

n°2039830
Paulp
~, sweet ~
Posté le 03-12-2010 à 11:44:31  profilanswer
 

En même temps, il t'a donné toute la marche à suivre.

 

En détaillant un peu plus :
1. Tu crées une table downloads :
id CHAR(32) PRIMARY KEY,
path VARCHAR(255),
date_validite / n_telechargements_autorises / ...

 

2. tu stockes tes fichiers dans un dossier qui n'est pas accessible via le serveur HTTP (soit en mettant le dossier ailleurs que le site, soit avec un htaccess sous apache, ...)

 

3. à l'envoi du mail :
tu crées un id aléatoire avec md5 par exemple

Code :
  1. $id = md5(rand())


tu insères dans ta base données un enregistrement avec l'id en question et le chemin du fichier (attention aux doublons d'id ! => gestion des exceptions)
tu envoies le mail avec un lien vers http://tonsite/script_de_telecharg [...] _ci_dessus
4. dans le script de telechargement
- tu recupères l'id en paramètre
- tu recupères l'enregistrement en base correspondant
- tu verifies la validite (date, nombre de telechargements)
- tu incrementes en base le nombre de telechargements (si tu fais une restriction dessus), ou tu supprimes l'enregistrement pour empecher de retelecharger, ...
- tu envoies les headers correspondants au type de fichier
- tu envoies le fichier avec readfile

 

5. tu fais un script de suppression des trop vieux enregistrements dans la base.
Si tu peux, tu appelles ce script dans un cron, sinon tu peux le faire à chaque téléchargement, ou sur une action de l'admin.

 

EDIT : tu peux aussi utiliser md5( uniqid() ) pour générer un id aléatoire de 32 caractères ...


Message édité par Paulp le 03-12-2010 à 12:00:56

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  envoyer lien download ds mail

 

Sujets relatifs
[VBA/LOTUS]: écrire mail avec fichier attaché + JPEG intégré au corpsFormulaire a envoyer / Mail vide / html + php
onclick sur un tr et lien dans un tdEdition de lien avec fann-2.1.0 et fannada
Remplacer URL par LIEN cliquable via REGEXComment rendre visible une image cachée au survol d'un lien ?
comment faire un lien interne en CSS?lien vers maps avec arrivé prérempli
Détection automatique lien externe >> frame 
Plus de sujets relatifs à : envoyer lien download ds mail


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR