Je fais un projet pour un lien de téléchargement temporaire pour moi pour protéger le fichier de Hotlinkers ...
Je pense que cela est possible de le faire .. Parce que nous savons tous que beaucoup de site de partage de fichiers "< em> ne veux pas mentionner de em> "... leur lien pour le fichier a une expiration ... p>
ex. p>
Si je télécharge un fichier de leur site Ils donnent un lien direct pour cliquer dessus correctement? Mais alors ce lien expirera juste après quelques heures ou quelques minutes. P>
Comment dois-je savoir que le lien a été expiré? Si je copie le même lien sur mon gestionnaire de téléchargement après un jour, il ne peut pas télécharger le même fichier. P>
J'ai déjà fait cela possible dans S'ils copient le lien direct dans la barre d'adresse du navigateur, ils seront redirigés dans http://domain.com strong> p> mais s'ils copient le lien direct sur leur gestionnaire de téléchargement, le fichier sera téléchargé. < / p> Et si elles postent le lien dans un autre site comme le site Web du Forum, Blog, etc.,
Et demandez au lecteur de copier et collez le lien dans son gestionnaire de téléchargement, de sorte qu'ils puissent le télécharger directement. p> C'est le problème que je veux empêcher de protéger mon fichier. Je fais cela sur php mais je ne peux pas comprendre ... p> Votre aide est très appréciée. P> p> haccesses code>. P> < p> ex. p>
5 Réponses :
Utilisez du code comme celui-ci Ajoutez ceci à votre fichier .htaccess p>
Vous ne devriez pas utiliser .htaccess pour cela car il deviendra immuable car vous avez plus de fichiers et de différents endroits.
La solution qui me vient à l'esprit est la suivante:
Si vous avez une table qui représente un fichier et, par exemple, Filemodel, vous pouvez enregistrer le nom du fichier, quelques détails, une taille, un chemin d'accès au fichier dans votre système de fichiers et un point unique, ce qui peut résulter du MD5 à partir de certaines des données que vous choisissez. Il repose sur certains détails de fichier par exemple: à chaque fois avant de laisser quelqu'un télécharger votre fichier, vous vérifiez s'il y a une valeur unique dans votre table si vous laissez donc quelqu'un de télécharger avec votre méthode de téléchargement Créé dans Filemodel, mais juste avant de faire une nouvelle unique pour empêcher davantage de téléchargements p> s'il n'y a pas de valeur unique si unique dans votre base de données, vous vient de montrer une erreur sur Lien délai à l'utilisateur p> Ici, je pars vous assume un exemple de prototype d'action que vous pouvez commencer par votre contrôleur: p> function download($file_data = ''){
$data = $this->FileModel->find('first', array('conditions' => array('FileModel.unique' => $file), 'fields' => array('*')));
if(!is_array($data[FileModel])) $this -> setFlashError('link expired');
else
{
$data[FileModel]['unique'] = md5(time() . $data[$this -> name]['file']);
$this -> FileModel-> save($data[$this -> name]);
if(!$this -> FileModel -> downloadFile($data[$this -> name]))
{
$this -> setFlashError('error'));
}
}
}
lien à quelque chose comme lorsque vous recevez une demande au / téléchargements / abb76b3acbd954a05bea357144d614b4 code>, où abb ... em> est une chaîne aléatoire telle qu'un hachage salé de l'heure actuelle. Lorsque vous faites ce lien pour quelqu'un, stockez la chaîne aléatoire dans une table de base de données. Cette table pourrait ressembler à:
/ téléchargements /... code>, recherchez la chaîne aléatoire et renvoyez le fichier correct. Si le
créé code> horodatage est trop vieux, ne le faites pas. Utilisez un cronjob pour nettoyer les anciens rangées de table ou moins idéalement, faites-le à chaque fois que quelqu'un apporte une demande à
/ téléchargements /... code>. P> p> p>
Je pense que c'est facile et propre mais il y a toujours des chances que quelqu'un télécharge le fichier.
Celui que j'ai trouvé:
Je connais cette vieille question mais j'ai le moyen de télécharger le fichier juste 1 fois sans utiliser de base de données, de manière rapide :)