安全下载无需身份验证

时间:2013-07-12 17:57:32

标签: php apache mod-rewrite symfony

我想创建临时链接以防止直接下载文件。

流程应该是这样的:

用户购买该文件,仅指示电子邮件地址 - >使用所购买临时文件的网址向该地址发送电子邮件。

我希望这个网址只能使用3次。

我该怎么做? 在apache服务器上使用Symfony2。

我为非常模糊的请求道歉,但我会失明,我不知道该找什么方法。

2 个答案:

答案 0 :(得分:0)

生成一个随机密钥,创建一个包含fileid,key,number_of_downloads的mysql表。

每次用户点击http://www.yourdomain.com/getfile.php?file=blah&key=blahblah的链接时,您都可以更新表number_of_downloads。如果它是< 2,重定向到文件(使用php标头或symphony的重定向),如果它是> 2,给404或者其他......

答案 1 :(得分:0)

应该很简单(尽管我对Symfony2了解不多)。您将拥有一个获取“关键”参数的下载页面(可能是/download?key=blahblahblah)。创建一个数据库(或其他类型的存储),每当您需要生成下载链接时,让您的代码组成一个密钥并将其存储在数据库中。每个密钥也可以附加一个数字,它仍然可以使用它的次数,或者一个到期时间。下载页面将确保密钥仍然有效,如果是,则提供该文件。

编辑:这是通过PHP脚本提供文件的示例:

// this may need to change depending on the file type
header("Content-Type: application/octet-stream");
// this makes sure the downloaded file doesn't get named "download.php"
header("Content-Disposition: attachment; filename=stuff.zip");
// and this sends the file
echo file_get_contents("/path/to/stuff.zip");

再次编辑:实际上,this可能是更好的方式。