2012-03-24 67 views
3

如果我的项目存储在数据库中,用户购买后可以下载,我如何提供每个用户不同的链接?创建个性化的下载链接

我在想,会做的正确的事情是:给他们一个链接,以某种方式基于他们的用户ID例如哈希。然后,当我处理链接,我给他们我只是反转哈希函数来获取原始链接。这是做事的正确方法吗?

如果这不是正确的方法,有人请指出我的方向是正确的吗?

+1

它会暂时链接吗? – safarov 2012-03-24 19:13:29

+0

没有永久链接 – Biscuit128 2012-03-24 19:24:12

回答

1

散列函数并不意味着被颠倒。我建议阅读关于lighttpd mod_secdownload实施

它给你一个受保护的链接,有效的一段时间。由于散列无法逆转,因此您需要在链接中传递散列信息以及明文信息(如果可能)。例如:

http://somesite.com/download.php?hash=<md5($secretkey.$userId.$documentId)>&usrId=<$userId>&documentId=<$documentId> 

当您收到下载请求,过程中有,也比较给定的一个,如果当时你认为这是证明它是平等的。

0

你应该在你的数据库中存储诸如“下载令牌”之类的东西。当用户想要下载某个内容时,您会创建一个新的令牌(例如一个随机数),并且如果有多个要下载的内容,可以使用它们的ID将其绑定到它们。

在URL中简单地将令牌作为GET变量发送。用户下载内容后,从数据库中删除令牌。