保护数字商品目录的最佳方法是什么,以便只能通过PHP脚本访问?

时间:2011-11-27 18:52:54

标签: php permissions download password-protection

我的网站与PayPal数字商品API进行交互,完成后重定向回我的PHP脚本,然后允许下载。

我想知道保护包含Web根目录之外的数字商品的目录的最佳方法。

目前我通过删除所有权限来保护目录。调用下载脚本时,将更改包含数字商品的目录的权限以允许下载,然后再次删除。下面是脚本中发生的事情的简写版本。

chmod('/digital/goods/directory/file', 0777);
readfile(file);
chmod('/digital/goods/directory/file', 0000);

我确信这不可能是正确的方法。你可以在没有用户输入用户名和密码的情况下使用htaccess吗?任何指针将不胜感激。

2 个答案:

答案 0 :(得分:2)

确保未直接提供文件。在Apache中,您可以将它们排除在DocumentRoot之外。

然后,权限无关紧要,因为根本没有映射到它们的URL。

答案 1 :(得分:0)

将您的数字商品存储在DocumentRoot上方,然后通过PHP脚本为每个购买者提供唯一的哈希值

IE)

DocumentRoot:/ home / user / public_html / store

受保护的文件夹/家庭/用户/商品

使用PHP: Readfile()见http://php.net/manual/en/function.readfile.php

并使用类似的东西来提供文件:

<?php
// We'll be outputting a PDF
header('Content-type: application/pdf');

// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// The PDF source is in original.pdf
readfile('/home/user/goods/original.pdf');
?>