PhP下载链接与变量

时间:2012-04-09 23:48:24

标签: php variables post hyperlink download

好的,所以我正在尝试在我的网站上创建一个下载链接生成器。 我的意思是:

    • 用户编写“列表X”,站点列出给定目录中的每个文件
    • 每个文件都有一个数字(从0到n)
    • 当用户输入:“download 5”例如
    • 它将用户重定向到下载脚本
    • 该脚本使用户有一个弹出的下载“框”
  1. 我首先想到我可以创建一个包含每个文件名的数组,然后使用该数组中的位置作为“download X”命令。

    因此,当他将用户重定向到下载脚本时,具有用户想要下载的文件名称的变量将“POST”到下载脚本,因此标题会发生变化。

    所以这是我的两个问题:

    1) - 如何根据用户输入更改下载脚本? 2) - 输入字段已用于“$ _SERVER ['PHP_SELF']”的其他用途,所以我不知道如何在没有表单的情况下“POST”变量?

    这是我的简单下载脚本:

    <?php
    header('Content-disposition: attachment; filename=huge_document.pdf');
    header('Content-type: application/pdf');
    readfile('huge_document.pdf');
    ?>
    

    提前致谢!

1 个答案:

答案 0 :(得分:1)

不要让他们输入任何东西。让每次下载都是他们点击的链接。在链接的URL中,您将拥有一个包含下载唯一标识符的查询字符串。像这样:

<a href="/path/to/downloadscript.php?id=5">Down file #6</a>

downloadscript.php然后会从$_GET superglobal获取ID,您可以从那里开始(使用示例中提到的数组):

<?php
$download_id = (int) $_GET['id']; // 5
$files = array(
    file1.pdf,
    file2.pdf,
    file3.pdf,
    file4.pdf,
    file5.pdf,
    file6.pdf  // This is the file they'll get
);

$filename = $files[$download_id];

// get the file name from your array or database
header('Content-disposition: attachment; ' . filename=$filename);
header('Content-type: application/pdf');
readfile($filename);
?>