-2

我试图隐藏我的产品文件的位置,所以我在购买后使用 PHP标头启动下载服务器端。是否有可能发现文件的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;
}
4

4 回答 4

1

浏览器可以选择跟随header('Location: ');或不跟随,所以是的,他们可以。

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

于 2013-05-26T19:44:45.090 回答
1

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

于 2013-05-27T08:51:17.817 回答
0

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

于 2013-05-26T19:46:42.957 回答
0

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

于 2013-05-26T19:48:09.810 回答