我想创建临时链接以防止直接下载文件。
流程应该是这样的:
用户购买文件,仅指明电子邮件地址 -> 向该地址发送一封电子邮件,其中包含购买的临时文件的 url。
我希望这个网址只能使用 3 次。
我怎样才能做到这一点?在 apache 服务器上使用 Symfony2。
我为这个非常模糊的要求道歉,但我会失明,我不知道要寻找什么来找到方法。
我想创建临时链接以防止直接下载文件。
流程应该是这样的:
用户购买文件,仅指明电子邮件地址 -> 向该地址发送一封电子邮件,其中包含购买的临时文件的 url。
我希望这个网址只能使用 3 次。
我怎样才能做到这一点?在 apache 服务器上使用 Symfony2。
我为这个非常模糊的要求道歉,但我会失明,我不知道要寻找什么来找到方法。
生成一个随机密钥,创建一个包含 fileid、key、number_of_downloads 的 mysql 表。
每次用户单击指向http://www.yourdomain.com/getfile.php?file=blah&key=blahblah的链接时,您都可以更新表 number_of_downloads。如果它 < 2,则重定向到文件(使用 php 标头或 symphony 的重定向),如果它 > 2,则给出 404 或其他...
它应该很简单(虽然我对 Symfony2 了解不多)。您将有一个下载页面,其中包含一个“key”参数(可能是/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");
再次编辑:实际上,这可能是一个更好的方法。