web-dev-qa-db-fra.com

Comment créer des liens de téléchargement TEMPORAIRES dans un POST wordpress?

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

1
mCrazy eng

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.

1
Mark Kaplun