一个PHP脚本,允许用户从我的网站下载一个文件,而不显示我网站中的实际文件链接?

一个PHP脚本,允许用户从我的网站下载一个文件,而不显示我网站中的实际文件链接?,php,file,scripting,download,hide,Php,File,Scripting,Download,Hide,这个问题说明了一切。。我如何让用户从我的网站下载一个文件,而不让他们看到该文件来自哪个链接?我知道可能需要像download.php这样的东西作为网关,但过了那个阶段,我不知道接下来要编写什么脚本。。。如果编写整个代码让您感到困扰,那么我需要使用的几个函数名将非常方便 您可以使用header函数 我建议向下滚动并查看第一个示例。它似乎正在做您想要的事情。找到一种方法来标识要下载的文件,例如,一个与数据库中某行ID匹配的GET变量,或者类似的东西。确保它是有效的,因为你不希望你的用户能够从你的网站

这个问题说明了一切。。我如何让用户从我的网站下载一个文件,而不让他们看到该文件来自哪个链接?我知道可能需要像download.php这样的东西作为网关,但过了那个阶段,我不知道接下来要编写什么脚本。。。如果编写整个代码让您感到困扰,那么我需要使用的几个函数名将非常方便

您可以使用header函数


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

找到一种方法来标识要下载的文件,例如,一个与数据库中某行ID匹配的GET变量,或者类似的东西。确保它是有效的,因为你不希望你的用户能够从你的网站下载任何东西。然后,与内容配置一起使用,告知浏览器应下载该文件并将其输出

例如:

<?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;

?>

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

如果不让某人知道URL,就不能让他们从URL下载文件。这在HTTP规范下是不可能的。任何下载的东西都有一个URL


但是,您可以有一个只工作一次的下载URL,或者需要通过POST方法传递一些特定信息。您可以在GET或POST变量中检查标记,并在使用该标记一次后使其无效。

请注意Shedo Chung Hee Surasi-第二个示例还向您展示了如何指定与您在问题中提到的原始文件名不同的文件名。我记得在导出时使用了类似的技术csv文件中的电子邮件地址。safari for mac忽略了内容类型标头。此脚本是否具有htaccess证据?我有一个htaccess规则来拒绝对真实URL的访问,以防绕过该方法。“全部拒绝”是否也会影响此脚本?@CodigosTutoriales,.htaccess文件中的规则仅影响来自客户端的web请求。它们不会阻止服务器代码读取服务器上的文件。