如何访问受htaccess保护的某个php页面的文件?

时间:2014-03-20 20:00:16

标签: php html .htaccess

我有一个页面(例如:http://mypage.com/getfiles.php),用户可以在其中输入密钥代码 然后页面生成链接(html http://mypage.com/download/myfile.zip)到文件zu下载,用户可以点击链接获取文件。

问题是文件存储在受保护的文件夹(下载)中,因此没有人可以直接访问http://mypage.com/download/myfile.zip下的文件。

我尝试了一些不同的想法,我在互联网上阅读更改.htaccess文件,以便从某个页面访问...但它没有用!

所以我有两个问题: 这是最简单的方法吗?或者更好的是使用另一种方式让用户访问文件(文件大小从50mb到500mb) 2.如果自定义.htaccess文件的想法是最好的方法吗?

# set an environtment variable "noauth" if the request starts with certain string
SetEnvIf Request_URI "^http://mypage.com/getfiles.php" noauth=1

AuthType Basic
AuthName "Access to /download"
AuthUserFile ****
Require user ****

# Here is where we allow/deny
Order Deny,Allow
Satisfy any
Deny from all
Require valid-user
Allow from env=noauth

或者我是否必须引导用户使用php脚本将其转发到文件中,因为链接不起作用?

非常感谢!

2 个答案:

答案 0 :(得分:3)

您可以在http://mypage.com/下创建一个名为 download.php 的脚本,该文件将文件“download / myfile.zip”中的内容全部复制并自动下载到用户。

示例代码:

// Add some keycode security, then download file for user.

$file_url = 'download/myfile.zip';
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary"); 
header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\""); 
readfile($file_url); // do the double-download-dance (dirty but worky)

答案 1 :(得分:1)

  1. 对于直接访问/download文件夹的人,请将此基本身份验证“按原样”。
  2. getfiles.php中进行这些更改。您可以生成如下链接:

    ,而不是直接链接到zip文件
    1. 验证keycode并将其存储在会话中。
    2. 如果keycode有效,则生成下载链接:http://mypage.com/files.php?path=/download/myfile.zip
    3. 在新文件files.php内查看会话是否有效keycode。如果是,则使用具有正确Content-Type标题的PHP文件操作访问该文件。