一个PHP脚本,让用户从我的网站下载文件而不泄露我网站上的实际文件链接?

时间:2010-07-15 04:08:47

标签: php file scripting download hide

问题就说明了这一点..我如何让用户从我的网站下载文件,让他们看看该文件来自哪个链接?我知道可能需要一些像 download.php 这样的东西作为网关,但过去那个阶段,我不知道接下来要编写什么脚本...如果它困扰你写下整个代码,我需要使用的一些函数名称真的很方便!

4 个答案:

答案 0 :(得分:10)

找到一种方法来识别要下载的文件(例如,与数据库中某行的ID匹配的GET变量,或者沿着这些行的某些内容)。确定它是有效的,因为您不希望您的用户能够从您的网站下载任何内容。然后,使用headerContent-Disposition告诉浏览器应该下载文件,并readfile输出文件。

例如:

<?php

$id = intval($_GET['id']);
$query = mysql_query('SELECT file_path FROM files WHERE id = ' . $id);
if (($row = mysql_fetch_row($query)) !== false)
{
    header('Content-Disposition: attachment; filename=' . basename($row[0]));
    readfile($row[0]);
}
exit;

?>

答案 1 :(得分:4)

您无法让某人从网址下载文件而不让他们知道该网址。根据HTTP规范,这是不可能的。下载的任何内容都有一个URL。

但是,您可以拥有仅运行一次的下载URL,或者需要通过POST方法传递某些特定信息。您在GET或POST变量中检查令牌,并在该令牌使用一次后使其无效。

答案 2 :(得分:1)

您可以使用header()

的{{1}}功能

我建议向下滚动并查看第一个示例。它似乎正在做你想要的。

答案 3 :(得分:0)

readfile应该做你想做的事。将实际文件放在Web服务器根目录之外,并在传回文件之前需要一些凭据。