我需要一种方法来保护下载器看到文件的下载URL。PHP保护下载
这个想法是,用户在付费后被给了一个下载链接,但是阻止他们在没有付费的朋友之间传播URL。
这有什么常见的解决方案?可能更改文件名?
(我可以做PHP和MySQL这个帖子是真的方法)
我需要一种方法来保护下载器看到文件的下载URL。PHP保护下载
这个想法是,用户在付费后被给了一个下载链接,但是阻止他们在没有付费的朋友之间传播URL。
这有什么常见的解决方案?可能更改文件名?
(我可以做PHP和MySQL这个帖子是真的方法)
如果用户在您的网站上有一个帐户,如果他们支付了下载,请在您的数据库中存储。然后给他们一个链接,比如download.php,在那里你确认他们是否付费,如果是的话,给文件做一个位置。例如,对于一个.pdf:
if($userpaid === true) {
$filename = 'congrat-you-paid-it.pdf'; //Name to display
$file = './download/pdf/secretlink.pdf';
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="'.$filename.'"');
header('Content-Length: ' . filesize($file));
@readfile($file);
exit;
}
一种解决方案可能是在运行时使用SESSION
或类似的临时存储并生成下载网址。因此,再次点击该网址可能无法正常工作。
此外,不应允许直接访问这些文件。
这是否可以通过电子邮件向他们发送链接?不太熟悉如何做到这一点,但会查看它,谢谢 – user961882
为了清楚起见,这意味着:为每次购买的每个文件创建一个不同的URL。对于同一文件的其他客户而言,这些链接永远不会相同。我也会说:将它们存储在数据库中。通过这种方式,您可以通过电子邮件将链接发送给用户,并且一旦他下载了文件,就可以使链接无效并添加一些附加信息,例如下载的日期和时间。 – insertusernamehere
@ user961882,是的,你可以创建这些链接并通过邮件发送。正如前面的评论中所建议的那样,您可以将这些URL存储在数据库中,另外您可以将它们与用户相关联,以便其他用户无法下载...并下载用户必须登录(当然) –
使用会话方便快捷,更好的安全性,你可以做的是:
把实际的文件中的一个单独的文件夹,并把一个的.htaccess其中的 只允许脚本访问该文件。
然后生成一个随机的唯一变量
然后,让这个名称的临时文件,并给予相应的链接到 客户
最后运行cron作业删除不必要的创建的文件。
可能不应该这样做。没有必要物理地操作文件。你可以通过保持文件名不变,然后通过一个唯一的字符串路由到它们来完成同样的事情,只允许使用一次。 – 1mike12
同意@ 1mike12,是一个古老的答案。接受的答案更有意义。 –
创建一个令牌。存储在您的最后并使用文件URL发送。当用户点击URL与令牌匹配并允许下载时,然后从存储中删除令牌。 每次注册用户想要下载时,您都必须生成新的令牌。
您可以根据下载次数,IP地址以及可能的时间限制下载URL,这样购买了您的下载的用户只能访问该文件,并且当他们给朋友时它不起作用:)
首先你可以测试这个免费的工具,让你在FLY上创建一个受保护的链接http://protectedlinks.net/PLSafe/index.php
你总是可以使用重写屏蔽URL。 – 2013-08-21 11:23:34
@remyabel实际上并没有保护文件。 – Prix
@remyabel天才!唯一的问题是,最终用户仍然会看到*一个URL *并能够从该URL *下载该文件。他并不关心它在服务器内部如何被损坏。 – deceze