2017-03-15 47 views
0

我已经简单的下载脚本(用于WordPress的文件下载PHP防止直接访问文件,但在下载脚本仍然使用

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,但没有结果。它是直接阻断该文件,但还脚本将无法下载文件。

任何帮助?

谢谢!

+0

'$ _SERVER ['HTTP_USER_AGENT']'可以帮助 –

+0

只需将要访问的文件存储在无法通过正在运行的HTTP服务器访问的目录中。 – GordonM

+0

这种情况在这种情况下是不可能的,我将所有内容存储在一个文件夹中(受保护的文件并且未受到保护) – kroma

回答

2

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

+0

download.php脚本位于与要下载的文件不同的位置,不同的文件夹。 – kroma

0

我会假设用户需要点击某个按钮来获取文件,指的是post方法,如果不从后您展示主题的错误消息,

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

IM也假设你有你的文件在单独的文件夹,你可以用下面的规则,创造新的.htaccess文件:

Order Deny,Allow 
Deny from all 
+0

不,用户点击导致download.php?file_id = 66的链接,然后download.php提供文件下载。但是,如果用户从哪个文件夹中找出它来自哪个文件夹,它仍然可以通过浏览器中的直接链接访问。 – kroma

+0

然后让我编辑我的答案 –

+0

您使用.htaccess文件? –

0

来解决这个问题,你可以做的是你可以保持脚本文件夹出在哪里下载文件和.htaccess文件位于。

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

希望它是有道理的。

相关问题