Как принудительно загрузить разные файлы.pdf в одном скрипте?

У меня есть веб-страница с 3 ссылками.

Когда кто-то нажимает на ссылку, он перенаправляет их на redirect.php и принудительно загружает соответствующий файл.pdf. Почему все 3 ссылки принудительно скачивают один и тот же файл.pdf? Как сделать так, чтобы каждая ссылка загружала отдельный файл.pdf?

1 ответ

Решение

Вы можете прочитать значение параметра _GET Variable "dl" с помощью $_GET['dl'],

<?php
if (isset($_GET['dl'])) {
  switch ($_GET['dl']) {
    // whitelist of downloadable files
    case  "mypdf1.pdf": 
    case  "mypdf2.pdf": 
    case  "mypdf3.pdf": 
      $file = basename($_GET['dl']);
    default: 
      die("no such file");
  }
} else {
  die("bad request");
}

// provide file  
header('Cache-control: private'); 
header('Cache-Control: no-store, no-cache, must-revalidate'); 
header('Cache-Control: pre-check=0, post-check=0, max-age=0'); 
header('Pragma: anytextexeptno-cache', true); 
header('Content-type: application/pdf'); 
header("Content-Disposition: attachment; filename=$file"); //external 
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT'); 
header('Expires: 0');
readfile("hiddenfiles/$file");    

HTML

  <a href="redirect.php?dl=mypdf1.pdf" target='_blank'>mypdf1.pdf</a>
  <a href="redirect.php?dl=mypdf2.pdf" target='_blank'>mypdf2.pdf</a>
  ...

Если вы хотите все 3 сразу, вы можете предоставить архив, например, zip или tar.

Другие вопросы по тегам