Je crée un blog WordPress avec une page réservée aux membres. Dans ces publications réservées aux membres, j'ai mes propres liens de téléchargement de tutoriel que j'ai téléchargés GRATUITEMENT. Le problème est que je veux qu’ils arrêtent de partager le lien de téléchargement pour les tutoriels, au lieu de cela, je veux leur donner des liens qui ne fonctionneront qu’une fois OR Il ne fonctionnera que s’il est accessible depuis mydomain.com ..
Quelqu'un peut-il m'aider? toute idée serait bien appréciée.
-Cordialement
Cela ressemble à quelque chose que les plugins de commerce électronique devraient pouvoir gérer.
Mon approche naïve à ce problème peut être de générer une nouvelle URL chaque jour en y incorporant la date, puis en vérifiant que la date de l'URL correspond à la journée en cours avant l'envoi du fichier.
Vous aurez besoin d'un plugin qui vous donne la possibilité d'utiliser un shortcode pour rmbed l'URL et en vérifie la validité avant d'envoyer le fichier.
// files assumed to reside at wp-content/uploads/daily
// use the shortcode like that
// [daylyurl file="file name" anchor="download it"]
add_shortcode('dailyurl','my77348_dailyurl');
function my77348_dailyurl($attr,$content='',$tags) {
$url = get_option('siteurl').'?download='.$attr['file'].'&code='.md5(intval(time()/24*60*60));
return "<a href="$url">$attr['anchor']</a>";
}
// handle the download itself
add_action('init','my77348_download');
function my77348_download() {
if (isset($_GET['download'])) {
if ($_GET['code'] == md5(intval(time()/24*60*60))) { // if it match it is legit
$f = ABSPATH.'/wp-content/uploads/daily/'.$_GET['download'];
// not sure if you can set mime types here or need to do all of this before init
readfile($f); send the file itself
exit();
} else
wp_die(404); // not legit
}
}
Ce n'est pas un code de qualité de production car il y a beaucoup de vérifications de sécurité que j'ai omises et qui ont probablement un bogue ou plus, mais je pense que le concept devrait fonctionner tant que vos membres ne sont pas très motivés pour essayer de le pirater.