PHP下载脚本.应该下载脚本和清单脚本是在一个单独的文件或不


PHP download script. Should download script and listing script be in a seperate file or not?

这是我在这里的第一篇文章。尝试使用搜索,但找不到类似的讨论(我知道有很多例子如何做到这一点,但没有一个解释你应该在一个或两个文件中这样做,以及为什么)

我有一个download.php文件,其中列出了可下载的文件。下载链接链接到实际下载的带有_GET参数的同一页面。

在任何实际输出之前,将下载文件的头放在相同的.php页面的顶部是否安全?还是应该使用不同的.php文件进行实际下载,以及用于可下载文件列表?

它工作得很好,但是我以后使用这种代码会遇到问题吗?

我这样做的原因是为了避免将用户从列表中重定向。现在你只需点击你想要的文件,它就会立即开始下载,同时保持在同一页面(下载多个文件更容易/更快)。

我才做了几个月的专业程序员,我想学习正确/好的方法…不仅是目前的工作方式。

页面源代码如下(简而言之):

<?php
CheckForLogin();
// download script for the actual download
if(isset($_GET['id']) {
    $temp_path = GetPathFromDatabase($_GET['id']);
    header('Content-Type: application/pdf');
    header("Content-Transfer-Encoding: Binary");
    header("Content-disposition: attachment; filename=$temp_path");
    readfile($file_url);
}
<!DOCTYPE html>
<html lang="en">
<head>
...
</head>
<body>
...
// download link
<a href="download.php?id=xxx">Download</a>
...
</body>
?>

只需在后面加上die()或exit() readfile($file_url);或将html放在else语句中,就不会有问题了