Limiter les téléchargements aux fichiers payés uniquement
8 messages
• Page 1 sur 1
-

OTP - Modérateur

- Messages: 19532
- Inscription: 16 Déc 2005
Limiter les téléchargements aux fichiers payés uniquement
Bonsoir,
Je cherche un moyen de proposer directement au téléchargement les fichiers achetés par mes clients.
Les quelques 100 fichiers fichiers seront regroupés dans un répertoire unique.
Chaque client a une référence de commande, laquelle, via une table mysql, donne la liste des fichiers achetés.
Comment faire pour :
- le client ne puisse télécharger que ce qu'il a payé ? (au cas où il tente des URL "au hasard")
- éviter qu'un tiers accède lui aussi aux fichiers ?
Je ne sais pas par quel bout prendre le problème.
Merci d'avance,
Michaël
Je cherche un moyen de proposer directement au téléchargement les fichiers achetés par mes clients.
Les quelques 100 fichiers fichiers seront regroupés dans un répertoire unique.
Chaque client a une référence de commande, laquelle, via une table mysql, donne la liste des fichiers achetés.
Comment faire pour :
- le client ne puisse télécharger que ce qu'il a payé ? (au cas où il tente des URL "au hasard")
- éviter qu'un tiers accède lui aussi aux fichiers ?
Je ne sais pas par quel bout prendre le problème.
Merci d'avance,
Michaël
-

Blount - WRInaute occasionnel

- Messages: 430
- Inscription: 18 Nov 2010
Re: Limiter les téléchargements aux fichiers payés uniquement
Dans le dossier où sont stockés les fichiers, tu met un ".htaccess" avec comme contenu :
Ce qui provoquera une erreur « 403 Forbidden » lors de l'accès directe aux fichiers.
Une autre solution (plus sur) est de sortir les fichiers du « Document Root », ainsi, il sera impossible d'y accéder directement.
Exemple :
Voilà pour la partie « protection d'accès ».
Maintenant, comment faire pour télécharger les fichiers ? Eh bien, avec PHP (ou autre).
Voici un exemple très très simple :
Tu définies un fichier PHP pour le téléchargement (on va dire telecharger.php). Tu passes en paramètre un ID de fichier qui va identifier le fichier à télécharger (laison avec MySQL).
Bon, ce n'est pas exempt de bug ^^
En gros, c'est ce qu'il faut faire.
- Code: Tout sélectionner
Deny from all
Ce qui provoquera une erreur « 403 Forbidden » lors de l'accès directe aux fichiers.
Une autre solution (plus sur) est de sortir les fichiers du « Document Root », ainsi, il sera impossible d'y accéder directement.
Exemple :
- Code: Tout sélectionner
www => apache (ou autre) pointe ici (directive DocumentRoot).
files => les fichiers
Voilà pour la partie « protection d'accès ».
Maintenant, comment faire pour télécharger les fichiers ? Eh bien, avec PHP (ou autre).
Voici un exemple très très simple :
Tu définies un fichier PHP pour le téléchargement (on va dire telecharger.php). Tu passes en paramètre un ID de fichier qui va identifier le fichier à télécharger (laison avec MySQL).
- Code: Tout sélectionner
<?php
// tu sélectionnes ici les informations liées au fichier demandé
$req = mysql_query("SELECT * FROM Files WHERE id = ".(int) $_GET["id"]);
if (false !== $file = mysql_fetch_array($req)) {
// tu fais tes vérifications (accès autorisé, stats, etc.)
// ensuite, on force le téléchargement du fichier
$name = $file["name"];
$path = "/chemin/vers/tes/fichiers/".$name;
$size = filesize($path);
session_write_close(); // Permet de continuer à naviguer sur le site durant le télécharegment
if(ini_get('zlib.output_compression')) {
ini_set('zlib.output_compression', 'Off'); // règle un bug sous IE si compression GZIP active.
}
header('Cache-Control: no-cache');
header('Cache-Control: post-check=0,pre-check=0');
header('Cache-Control: max-age=0');
header('Pragma: no-cache');
header('Content-Length: '.$size); // utile pour avoir la progression de téléchargement
header('Content-Type: application/force-download; name="'.$name.'"');
header('Content-Disposition: attachment; filename="'.$name.'"');
header('Content-Description: "Téléchargement de fichier"');
readfile($path);
}
Bon, ce n'est pas exempt de bug ^^
En gros, c'est ce qu'il faut faire.
-

zeb - WRInaute accro

- Messages: 4560
- Inscription: 5 Déc 2004
Re: Limiter les téléchargements aux fichiers payés uniquement
OTP a écrit:- le client ne puisse télécharger que ce qu'il a payé ? (au cas où il tente des URL "au hasard")
Tu peux lui envoyer en pièce jointe via un simple mail donc aucune exposition des ressources a autre chose que ton script de mail qui lui est sous contrôle (a mon avis c'est le plus simple).
Sinon vérifier la validité d'un couple "numéro client" / "nom de fichier" dans une table comportant les mêmes couples pour les clients ayant fait un achat peut apporter la garantie que le fichier demandé est bien légitime. il faut alors avoir mis en place un script frontal qui gère toutes les requêtes sur le dossier et qui a la capacité de vérifier en base que la demande est correcte, ce qui semble être la solution proposée par Blount.
Les urls devrait alors avoir la forme http://www.example.com/download/clientX/fichier-truc.php et ton script devrait être capable d'extraire "clientX" et "fichier-truc".
Tu peux de plus limiter le nombre d'accès a cette url pour éviter les downloads a répétition.
OTP a écrit:- éviter qu'un tiers accède lui aussi aux fichiers ?
Tu ne pourra pas éviter le "partage" que ton client peut faire de son achat sauf a l'avertir que le contenu est sous licence (comme les OS par exemple).
-

Leonick - WRInaute accro

- Messages: 19595
- Inscription: 8 Aoû 2004
Re: Limiter les téléchargements aux fichiers payés uniquement
le mieux serait de lui créer à la volée une archive zip contenant uniquement les fichiers qu'il a achetés, avec une url du genre exemple.com/da74ze5f8sdfr et avoir ce lien dans une table. Dès qu'il a été chargé une fois, tu n'autorises un autre accès que depuis la même ip et le même navigateur sur une durée de 24h, ensuite, plus accessible, ou alors en te contactant par mail.
8 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Limiter le nombre de téléchargements simultanés
- Fichiers payés == alimenter ma BDD ?
- Fonction PHP: traitement des téléchargements de fichiers
- Limiter l'accès à des fichiers au réseau local
- ie9 et "demander confirmation pour les téléchargements de fichiers"
- Hébergement réactif pour fichiers statiques uniquement
- Clics AdSense payés (ou pas.)
- Clics AdSense pas payés
- comptage des clics payés au CPC
- Les référenceurs sont-ils sous payés ?
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
