【问题标题】:Initiating a download with php, is it possible to view the download link? [closed]用php发起下载,是否可以查看下载链接? [关闭]
【发布时间】:2013-05-26 19:39:58
【问题描述】:

我试图隐藏我的产品文件的位置,所以我在购买后使用 PHP header 启动下载服务器端。有没有可能发现文件的url?

使用以下代码

if (file_exists($_SERVER['DOCUMENT_ROOT']."/files/$file")) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}

【问题讨论】:

    标签: php url download


    【解决方案1】:

    像现在这样流式传输结果,源对客户端隐藏。然后输出似乎来自php脚本

    【讨论】:

      【解决方案2】:

      浏览器可以选择是否关注header('Location: ');,所以是的,他们可以。

      我建议使用 readfile(); 之类的方式将它们流式传输给用户

      【讨论】:

      • 用实际代码更新问题。您认为我的代码可以发现该链接吗?如果是这样,我应该改变什么?
      【解决方案3】:

      这个问题的答案是生成一个绑定到文件的唯一哈希并将它们存储在一个表中。然后,您将具有该哈希的用户重定向到 /download/n43j234jb3434 之类的文件。此哈希是一次性使用。您可以使用readfile()下载文件

      【讨论】:

        【解决方案4】:

        使用位置标头基本上是在告诉客户端文件的位置。另一种选择是让 php 将文件提供给客户端,而不是重定向它们。

        【讨论】:

        • 抱歉,因为他修改了问题,所以这已经过时了
        猜你喜欢
        • 1970-01-01
        • 2012-12-09
        • 2021-01-01
        • 1970-01-01
        • 2014-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多