如何隐藏网站中的文件

时间:2017-06-23 23:43:58

标签: php

我试图隐藏用户的pdf文件,但我希望它们可以下载 继承我的文件结构

+-- index.php
+-- download.php
+-- content
    +-- .htaccess
    +-- files
       +-- pdf.pdf
       +-- pdf2.pdf

我尝试阻止用户使用.htaccess访问内容文件夹。

deny from all

但是当我用这个

下载pdf文件时
//download.php
header('Content-Type: application/pdf');
$file = "http://localhost/content/files/pdf2.pdf";
header("Content-Transfer-Encoding: Binary"); 
header("Content-disposition: attachment; filename=\"" . basename($file) . "\"");

浏览器无法加载它 我无法找到另一种方法来做到这一点

用户可以将文件上传到网站并确定价格 当你付了钱就可以下载了。下载前会有mysql查询,以检查用户是否已购买

1 个答案:

答案 0 :(得分:0)

您的download.php文件只是设置了一些标题,告诉浏览器下载文件。它实际上并没有在响应中写入文件的内容。您只需将以下代码行添加到download.php的末尾:

readfile($_SERVER['DOCUMENT_ROOT'] . "/content/files/pdf2.pdf");

注意:正如评论中提到的gview,执行此操作的正确方法是将文件移动到文档根目录之外,这样无论您的每个目录的htaccess文件是什么,都无法访问它们。您仍然可以使用我的解决方案,但不是使用$_SERVER['DOCUMENT_ROOT'],而是使用服务器路径。像这样:

readfile("/server/path/to/content/files/pdf2.pdf");