PHP阻止直接访问文件但仍在下载脚本中使用

时间:2017-03-15 11:21:13

标签: php file

我有简单的下载脚本(用于Wordpress文件下载

if($filesize) {
        header('Content-Type: application/octet-stream');
        header("Content-Transfer-Encoding: Binary"); 
        header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\""); 
        readfile($file_url);
    } else {    
        echo '<p>No file found</p>';
    }

我希望通过直接访问来阻止用户访问下载文件,因此如果用户在浏览器中输入路径,则无法访问该文件。

我用.htaccess尝试了这个但没有结果。它直接阻止了文件,但脚本也不会下载文件。

任何帮助?

谢谢!

3 个答案:

答案 0 :(得分:2)

如果文件与PHP脚本位于同一个框中,请将它们移出webserver目录,以便脚本可以访问它们,但用户不能访问它们。

答案 1 :(得分:0)

我将假设用户需要单击某个按钮来获取文件,意味着一个帖子方法,如果不是从帖子中显示主题的错误信息,

if($_SERVER['REQUEST_METHOD'] != 'POST'){
   echo 'Error: You cannot access this link Directly';
}

我还假设您将文件放在单独的文件夹中,您可以使用以下规则创建新的.htaccess文件:

Order Deny,Allow
Deny from all

答案 2 :(得分:0)

要解决此问题,您可以将脚本文件保留在下载文件和.htaccess文件所在的文件夹之外。

通过这样做,如果用户在浏览器中输入路径,用户无法直接访问下载文件,则不会下载文件。他们只能通过脚本访问文件。

希望它有意义。